sylvain tisserant architecture et technologie des ordinateurs

220
ARCHITECTURE ET TECHNOLOGIE DES ORDINATEURS Sylvain TISSERANT Université de la Méditerranée Ecole Supérieure d’Ingénieurs de Luminy - Département d’informatique 2003

Upload: babeloued

Post on 23-Jul-2016

246 views

Category:

Documents


3 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Sylvain tisserant architecture et technologie des ordinateurs

ARCHITECTURE ET TECHNOLOGIE

DES ORDINATEURS

Sylvain TISSERANT

Université de la Méditerranée

Ecole Supérieure d’Ingénieurs de Luminy - Département d’informatique

2003

Page 2: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 2

Page 3: Sylvain tisserant architecture et technologie des ordinateurs

Introduction I.1 Architecture des ordinateurs

I.1.a L'informatique aujourd'hui Apparue au milieu du 20ème siècle, l'informatique a connu et connaît une évolution extrêmement rapide. A sa motivation initiale qui était de faciliter et d'accélérer le calcul, se sont ajoutées de nombreuses fonctionnalités, comme l'automatisation, le contrôle et la commande de pratiquement tout processus, la communication ou le partage de l'information. Dans nos sociétés occidentales elle omniprésente. Après avoir été un outil réservé aux centres de recherche, elle s'est implantée dans l'industrie et depuis les années 80 elle envahit nos foyers. Au départ nous n'avions que des systèmes centraux, puis sont apparus les postes de travail individuels, très rapidement reliés en réseaux locaux. Tous, ou presque, sont maintenant connectés à la "Toile". Nombreux sont les projets actuels d'utilisation et de gestion d'une puissance de calcul énorme distribuée sur un grand nombre de sites disséminés de par le monde. L'informatique est en grande partie responsable de la profonde transformation que connaît actuellement la civilisation des pays riches. Les évolutions techniques sont telles que la durée de vie des matériels est relativement courte. Le marché est extrêmement instable et en permanente évolution. La position des constructeurs est presque remise en cause chaque jour. Face à cette situation, après une première période de systèmes propriétaires, dans lesquels un client de pouvait en pratique s'approvisionner qu'auprès d'un seul constructeur, nous sommes passés aux systèmes ouverts. Cela sous-entend des architectures normalisées pour lesquelles les éléments peuvent provenir de plusieurs constructeurs. En parallèle, du côté logiciel un accent important est mis sur la réutilisation des produits, qui doit permettre de suivre ces évolutions au prix d'un effort moindre, sans avoir à repartir de zéro à chaque passage sur une nouvelle plate-forme par exemple. Cela explique l'émergence des technologies "Orientées Objets" et du "Génie Logiciel". Il est à remarquer que cela se fait souvent avec une perte d'efficacité, masquée par l'évolution des performances au niveau technique. Face à cette situation très volatile, nous constatons tout de même que les concepts de base introduits par les pionniers perdurent, même s'ils peuvent se décliner de façons très différentes. Pour éviter d'avoir à réécrire ce cours d'Architecture des Ordinateurs tous les ans, j'ai donc pris le parti de principalement développer et expliquer ces concepts et les technologies de base. L'architecture du PC servira parfois d’exemple. Ce choix me semble être aujourd'hui (en l'an 2003) incontournable. Il y a quelques années j'aurais sans doute choisi les architectures RISC des stations de travail. Je ne prendrai pas le risque de prédire quel sera l'exemple à choisir dans cinq ou dix ans.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 3

Page 4: Sylvain tisserant architecture et technologie des ordinateurs

I.1.b Architecture générale et blocs fonctionnels Initialement un ordinateur était un calculateur numérique. C'est aujourd'hui une machine de traitement de l'information. Il est capable d'acquérir et de stocker des informations, d'effectuer des traitements et de restituer des informations. L'informatique, contraction d'information et automatique, est devenue la science du traitement de l'information. Un ordinateur peut être découpé en blocs fonctionnels. Le traitement de l'information est fait au niveau d'un processeur. Les actions que celui-ci doit effectuer sont définies par des instructions. Pour être accessible au processeur les données à traiter et les instructions doivent être stockées dans une mémoire. Le processeur et la mémoire sont reliés par un bus. Par ailleurs il faut que l'utilisateur puisse fournir à l'ordinateur des données et les instructions à suivre, tout comme il doit avoir connaissance des résultats. Il faut donc des dispositifs d'entrée et de sortie. Chaque bloc fonctionnel peut lui-même être décrit par un ensemble d'unités fonctionnelles. On parle alors de l'architecture du processeur, de l'architecture de la mémoire, etc. Par ailleurs on peut étudier l'architecture d'un réseau rassemblant plusieurs ordinateurs. On voit ainsi apparaître la notion de niveaux de représentation. A chaque niveau un objet considéré est décrit comme un ensemble de blocs interconnectés. Au niveau suivant chacun de ces blocs est à son tour décrit comme un ensemble de blocs interconnectés et ainsi de suite. Cette décomposition hiérarchique en niveaux dépend des besoins de la conception ou des outils utilisés : elle n'est ni figée, ni unique. Nous pouvons, par exemple, descendre au niveau des portes logiques et même au niveau des transistors qui composent ces portes. L'architecture d'un ordinateur constitue la représentation de ses unités fonctionnelles et de leurs interconnexions. Le choix d'une architecture est toujours le résultat d'un compromis :

- entre performances et coûts; - entre efficacité et facilité de construction; - entre performances d'ensemble et facilité de programmation; - etc …

Chaque solution adoptée pour une machine donnée, à un instant donné et pour un marché donné, pourra très vite être remise en cause par un nouveau progrès technologique. De même, des architectures proposées à un moment donné, puis abandonnées pour des raisons techniques ou économiques, peuvent un jour être à nouveau employées. Quelle que soit sa dimension (mini, micro, super, hyper, etc.) on retrouve toujours dans un ordinateur les mêmes blocs fonctionnels :

- une ou plusieurs unités de traitement; - de la mémoire; - un ou plusieurs disques durs, constituant une mémoire permanente;

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 4

Page 5: Sylvain tisserant architecture et technologie des ordinateurs

- des dispositifs de communication avec l’opérateur : un écran, un clavier, très souvent une souris ;

- des dispositifs de communication avec l’extérieur comme une imprimante ; - des dispositifs permettant l’archivage : disquette, bande magnétique, disque optique; - etc.

reliés par des bus, des liaisons ou des réseaux. L'informatique se trouve également être embarquée dans un grand nombre de dispositifs de la vie courante, aussi variés que machines à laver, distributeurs de boissons, voitures ou cartes bancaires. Si, par rapport à un ordinateur classique, les tâches à réaliser ne sont pas aussi polyvalentes et si les contraintes sont différentes, on y retrouve cependant les mêmes briques. Partant des portes logiques, nous allons essayer d'étudier dans ce cours les principes de base de chacun de ces composants. D'autre part, il est important de réaliser que matériel et logiciel sont indissociables, en particulier au niveau de la conception de tout système informatique. Nous rencontrerons dans ce cours un ou deux exemples de l'imbrication du logiciel et du matériel. Pour ce qui concerne le logiciel nous nous limiterons à quelques considérations simples sur le langage machine. Mais avant d'aborder l'étude des portes logiques, puis des premières unités fonctionnelles remontons dans le temps. I.2 Un peu d'histoire

I.2.a Le calcul mécanique Pour résumer l'histoire de l'informatique ou des ordinateurs, il souvent nécessaire de schématiser. Pour chaque invention, nous ne retenons en général qu'un nom. Mais souvent cette invention concrétise une démarche collective qui s'est étalée sur plus ou moins de temps. Très souvent aussi des prédécesseurs ont été oubliés. Je vais ici résumer l'histoire de l'informatique en m'appuyant sur quelques dates clefs les plus fréquemment citées. De tout temps l'homme a eu besoin de moyens de calcul. Citons à titre d'exemple le mot même, dont l'étymologie calculi signifie cailloux en latin (utilisés sur les abaques des Romains), ou encore la numérotation décimale liée à la technologie de la première calculatrice de poche : la main. Calcul digital signifiait alors compter sur ses doigts. Par ailleurs, toutes les grandes civilisations de l'Antiquité avaient leurs symboles pour coder les nombres et compter. Au début il s'agissait de signes simples (comme un trait) correspondant chacun au nombre 1. Un symbole représentant le nombre 10 est apparu en Egypte vers 3400 av. J.-C.. Il était ainsi possible d'écrire les nombres de manière un peu plus compacte. D'autres symboles spéciaux ont ensuite représenté les nombres 100, 1000 et 10000. La numération cunéiforme de Babylone utilisait un système sexagésimal (base 60). Le premier système binaire connu remonte à 3000 ans av. J.-C. environ. Il s'agit du Yin et du Yang chinois. On en trouve trace sur les figures magiques de l'empereur Fou-Hi, comme l'octogone à trigramme où les huit premiers nombres sont représentés sous forme binaire :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 5

Page 6: Sylvain tisserant architecture et technologie des ordinateurs

Figure 1 Les civilisations ont également cherché des outils pour faciliter et accélérer les calculs nécessaires à leur développement. Ce furent par exemple les bouliers en Chine et les abaques dans le Monde Méditerranéen. Une innovation très importante fut l'emploi de la notation positionnelle, qui confère des valeurs différentes aux symboles numériques selon leur position dans le nombre écrit. Cette notation positionnelle n'est possible qu'avec un symbole pour le zéro. Grâce au symbole 0, il devint possible de différencier 11, 101 et 1 001 sans recourir à des symboles supplémentaires. Cette notation a été introduite en Europe par l'intermédiaire des Arabes, l'Islam s'étendant alors des frontières de la Chine à l'Espagne. Le système dit arabe avait été développé en Inde environ 300 ans av. J-C. Cette introduction s'est faite grâce notamment à la traduction, vers 820 apr. J-C, des ouvrages du mathématicien de Bagdad Al-Khuwarizmi, dont le titre d'un des livres (al jabr) est à l'origine du mot algèbre. Les premiers documents attestant de l'utilisation du système arabe en Europe datent de 976, mais il faut attendre le XIVème siècle pour qu'il remplace totalement la numérotation romaine. Non seulement l'écriture des nombres devint plus compacte, mais les calculs écrits ont été largement simplifiés.

Il faut ensuite sauter au XVIIème siècle pour voir apparaître les premiers systèmes mécaniques de calcul, basés sur les roues dentées mises en œuvre depuis longtemps dans les horloges, automates, etc. On fait généralement commencer cette nouvelle période en 1614, date à laquelle John Napier (ou Neper), mathématicien écossais, inventa les premiers logarithmes. Il ramenait ainsi les opérations de multiplication et de division à de simples additions ou soustractions. Napier inventa également des machines à multiplier basées sur le déplacement de tiges : les Bâtons ou Os de Napier. Par ailleurs, il fut l'un des premiers (le premier ?) à utiliser le point décimal.

La règle à calcul, basée sur le principe des logarithmes, fut conçue par William Oughtred

en 1622. Sa précision sera suffisante pour les calculs scientifiques jusqu'à la première moitié du 20ème siècle. Par contre elle ne peut être utilisée en comptabilité.

En 1623, Wilhelm Schickard inventa pour Kepler une "horloge calculante" destinée à

calculer les éphémérides. Il utilisait des roues dentées et il avait abordé le problème du report de retenue. Mais cette machine a disparue en 1624 dans les ravages de la Guerre de Trente Ans en Allemagne du Sud. Elle a été reconstruite en 1960 d'après les plans originaux.

En 1642, à 19 ans, Blaise Pascal construisit, pour aider son père commissaire pour l'impôt

à Rouen, une "machine arithmétique" capable de traiter des additions et des soustractions à six chiffres. La Pascaline est considérée comme le premier additionneur à retenue automatique. A

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 6

Page 7: Sylvain tisserant architecture et technologie des ordinateurs

chaque chiffre correspond une roue avec dix crans. Lorsqu'une roue a effectué un tour complet (passage de 9 à 0), elle décale d'un cran la roue supérieure. Chaque chiffre est lu dans une fenêtre au-dessus de la roue. Les multiplications étaient possibles par l'exécution d'additions répétitives, comme l'a montré en 1666 Moreland.

En 1673, Gottfried Leibniz améliora la Pascaline en lui ajoutant un chariot et un tambour

à dents inégales. Cela permit d'automatiser, au moyen d'une manivelle, les additions et les soustractions répétitives nécessaires aux multiplications et divisions. Leibniz inventa également le système binaire et montra la simplicité de l'arithmétique binaire. Il l'appliqua à l'analyse des octogones de Fou-Hi.

En 1728, le mécanicien français Falcon construit le premier métier à tisser dont il

commande le fonctionnement avec une planchette en bois percée de trous. C'est la première machine commandée par un programme. Ce système fut perfectionné par Joseph-Marie Jacquard en 1805. La planchette de bois fut remplacée par des cartes en carton perforées articulées, comme on peut encore en voir dans les orgues portatifs. Les mécanismes d'exécution et les mécanismes de contrôle étaient séparés. Ce système permettait de reproduire des motifs compliqués avec une qualité égale, mais il supprimait également cinq ouvriers par métier à tisser. Cela déclencha une réaction violente des canuts de Lyon. Il s'agit sans doute d'un des premiers exemples de l'ère industrielle du remplacement d'hommes par des machines automatiques. Cependant dès 1812 on comptait 10000 de ces métiers à tisser.

En 1820 apparaît le premier "Arithmomètre" de Charles Xavier-Thomas de Colmar, sur la

base de la machine de Leibniz. Il pouvait exécuter les quatre opérations arithmétiques (addition, soustraction, multiplication, division). La première version de disposait que de 3 chiffres pour les opérandes et 6 pour le totaliseur. Mais cette capacité augmenta progressivement jusqu'à 30 chiffres. Sa facilité d'emploi assura son succès jusqu'à la Première Guerre Mondiale.

Jusqu'alors les calculateurs mécaniques étaient capables d'exécuter des opérations une à

une. Dans les années 1820 et 1830, un mathématicien anglais, Charles Babbage, rapprocha les machines à calculer et les systèmes de commande de Jacquard dans le but d'effectuer des calculs complexes nécessitant l'exécution en séquence de plusieurs opérations arithmétiques. Il a d'abord tenté de réaliser une "machine à différences" destinée au calcul de tables de navigation ou de tir. Il parviendra à construire un prototype partiel. Mais les difficultés techniques ralentissent son projet, qu'il devra abandonner après une dizaine d'années de travail, faute de moyens financiers suffisants. Il eut alors l'idée d'une machine plus universelle : la "machine analytique" capable d'enchaîner l'exécution d'opérations arithmétiques en fonction d'instructions données par l'utilisateur. Cette machine contenait les concepts de base qui se retrouvent dans les ordinateurs modernes : une unité de traitement (le moulin) commandée par une unité de contrôle, une mémoire (le magasin), une unité d'entrée pour recevoir des cartes perforées (opérations et nombres) et une unité de sortie pour imprimer ou perforer le résultat. Charles Babbage a été aidé dans la conception de cette machine par sa collaboratrice Ada Lovelace (fille du poète Lord Byron). Elle a en particulier défini le principe de l'enchaînement d'itérations successives pour la réalisation d'une opération, baptisé algorithme en l'honneur du mathématicien arabe Al-Khuwarizmi. Cette machine était cependant trop ambitieuse pour la technologie de l'époque. Un exemplaire fut partiellement construit par son fils en 1888.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 7

Page 8: Sylvain tisserant architecture et technologie des ordinateurs

En 1854 George Boole propose sa formulation mathématique des propositions logiques qui appliquée au système binaire est à la base du fonctionnement des ordinateurs.

I.2.b Le calcul électromécanique En 1890, Hermann Hollerith construisit un calculateur de statistiques qui fut utilisé pour

le recensement américain. Il s'agissait d'une machine électromécanique plus performante que les machines mécaniques. Il développa à cette occasion la carte perforée et inventa le système de codage des informations qui porte son nom. La détection de la présence ou de l'absence d'un trou se faisait au moyen d'aiguilles qui traversaient les trous et fermaient chacune un circuit électrique en trempant dans un godet de mercure. Par ailleurs la plupart des questions du recensement étaient posées sous forme binaire : premier exemple de l'imbrication de l'architecture matérielle et de l'organisation des données. Hollerith fonda en 1896, la Tabulating Machine Company pour produire ses cartes et machines mécanographiques. En 1924, celle-ci devint l'International Business Machines Corporation : IBM. En 1914, Leonardo Torres y Quevedo proposa de réaliser une version électromécanique de la machine de Babbage. Faute de moyens ce fut un échec. En 1930, Vannemar Bush construisit au MIT un analyseur différentiel, capable de résoudre des équations différentielles rencontrées dans l'étude des circuits électriques. La même année, Georges Stibitz réalisa un additionneur binaire à relais, le "Modèle K", s'appuyant sur les travaux de Boole. Les années 30 virent également de nombreux progrès sur le plan théorique. Par exemple, en 1936 Alan Turing énonce le principe d'une machine (virtuelle), qui pouvait en théorie réaliser tous les calculs mathématiques, avec en particulier des instructions conditionnelles. En 1938, dans sa thèse, Claude Shannon reprenant les travaux de Leibniz et Boole, mis en évidence une analogie entre l'algèbre binaire et les circuits électriques. Il montra plus tard que tout calcul logique ou arithmétique peut être réalisé avec uniquement les trois opérations logiques fondamentales : ET, OU et NON. Il est également l'inventeur du terme bit pour binary digit pour désigner le chiffre binaire. En 1938, Konrad Zuse créa avec des moyens modestes un ordinateur binaire programmable mécanique, le Z1. En 1939, il perfectionna sa machine en remplaçant une partie des pièces mécaniques par des relais électromécaniques (Z2). Le Z3 et le Z4, virent le jour en 1941 et furent utilisés pour des calculs aéronautiques. En 1939, John Atanasoff et Clifford Berry réalisèrent un additionneur binaire à 16 bits. Ils furent les premiers à utiliser des tubes à vide.

Parmi les derniers calculateurs électromécaniques il nous faut citer le Mark 1 ou ASCC (Automatic Sequence Controlled Calculator), développé en 1941 conjointement par IBM et Harward, sous la direction de Howard Aiken. Il s'agissait d'une énorme machine de 5 tonnes, couvrant 25 m2 et consommant 25 kW. Il comptait 3000 relais et 760000 pièces mécaniques. Le programme était lu sur une bande de papier, les données à partir d'une seconde bande de papier ou d'un lecteur de cartes. A l'origine les sauts conditionnels étaient impossibles. Par la suite il fut équipé de plusieurs lecteurs de cartes pour permettre ces sauts conditionnels et l'exécution de

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 8

Page 9: Sylvain tisserant architecture et technologie des ordinateurs

sous-programmes. En 1945, un insecte (bug) coince un relais, provoquant un dysfonctionnement de cette machine analytique.

I.2.c L'ère de l'électronique Egalement en 1941, John Atanasoff et Clifford Berry construisirent le premier ordinateur binaire à lampes : l'ABC (Atanasoff-Berry Computer). Il comportait une mémoire de 60 mots de 50 bits et une unité arithmétique et logique. Bien que le programme ne fut pas stocké en mémoire, l'ABC est souvent considéré comme le premier vrai ordinateur. L'année 1945 vit la mise en service de l'ENIAC (Electronic Numerical Integrator And Calculator) proposé en 1942 par Presper Eckert et John Mauchly. Il était composé de 19000 tubes, 1500 relais, consommait 170 kW, pesait 30 tonnes et couvrait une surface de 72 m2. Il était environ 500 fois plus rapide que le Mark 1 (environ 330 multiplications par seconde). Cependant sa programmation s'effectuait à l'aide de fiches à brancher dans un tableau de connexions. Le travail de programmation pouvait prendre plusieurs jours. A la fin de cette même année, John von Neumann, consultant sur l'ENIAC, proposa de coder le programme sous forme numérique et de l'enregistrer en mémoire, avec un gain en souplesse et rapidité. Il jetait ainsi les bases de l'architecture de l'ordinateur moderne. Il ne fut cependant pas le premier à réaliser cette machine. Des querelles entre Eckert, Mauchly et von Neumann portant notamment sur la paternité de l'idée et des brevets retardèrent le projet EDVAC (Electronic Discret VAriable Computer). Celui-ci fut devancé en 1948 par un prototype, appelé Manchester Mark 1, puis en 1949 par l'EDSAC (Electronic Delay Storage Automatic Computer) première machine opérationnelle construite par Maurice Wilkes. En 1948, William Shockley, John Bardeen et Walter Brattain inventèrent le transistor bipolaire. Celui-ci remplaça rapidement les lampes apportant fiabilité et rapidité aux ordinateurs de seconde génération.

Figure 2

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 9

Page 10: Sylvain tisserant architecture et technologie des ordinateurs

La taille et la consommation diminuèrent sensiblement. Le premier ordinateur utilisant des transistors fut le TRADIC en 1955. A la même époque, IBM commercialisa le premier disque dur (5 disques de 61 cm de diamètre pour 5 Mo). Les mémoires à tore de ferrite étaient également disponibles. Le PDP-8 de DEC fut le premier mini-ordinateur à être diffusé en grande série (50000 exemplaires).

La troisième génération, à partir de 1970, correspond à l'utilisation des circuits intégrés. L'Intel 4004, le premier microprocesseur 4 bits, fut en 1971 le premier circuit intégré incorporant unité de calcul, mémoire et gestion des entrées-sorties. Il comportait 2300 transistors. Le 8008 sortit un an plus tard. Le premier micro-ordinateur, le Micral N, fut construit en 1973 par une entreprise française R2E. Depuis le début des années 1980, le niveau d'intégration des puces ayant largement progressé en surface et en densité, on parle de quatrième génération. I.3 Quelques généralités sur les architectures

I.3.a Architecture de Von Neumann Cette architecture est caractérisée par un processeur et une mémoire reliés par un bus :

P M

B

Figure 3 Les instructions et les données sont stockées dans la mémoire. Pour accéder à une information contenue en mémoire le processeur affiche sur le bus l'adresse de celle-ci. Après un certain temps le contenu demandé est affiché par la mémoire sur le bus. On constate immédiatement que la rapidité d'une machine sera limitée par l'élément le plus lent. Il ne sert à rien de fabriquer un processeur très rapide si la mémoire n'est pas capable de lui fournir à un rythme suffisant les instructions à exécuter, ni les données à traiter. De manière générale lorsqu'on améliore les performances d'un élément de la machine il faut s'assurer que les autres éléments qui lui sont connectés seront capables de supporter des débits plus élevés. Dans le cas contraire il peut être favorable de revoir l'architecture de la machine. L'efficacité d'un ordinateur est directement liée au débit des informations (instructions et données) qui circulent entre les différents éléments. La conception d'une architecture a pour but d'optimiser ce débit, en prenant en compte des contraintes financières, commerciales et techniques. La machine de base, dite de Von Neumann, que nous venons de décrire ne présenterait aucun intérêt sans au moins un dispositif d'entrées/sorties pour permettre une communication

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 10

Page 11: Sylvain tisserant architecture et technologie des ordinateurs

avec l'extérieur. Pour une machine aussi simple il existe au moins trois méthodes pour installer un tel dispositif : - Interface directement reliée au processeur :

P M

B

E/S

Figure 4 La communication est réalisée à l'aide d'instructions spécialisées ou par l'intermédiaire de registres spécialisés. - Interface connectée au bus commun :

P M

B

E/S

Figure 5 Un fil spécialisé du bus indique si le processeur s'adresse à la mémoire ou à l'interface d'E/S. - Interface vue par le processeur comme une partie de la mémoire :

P M

B

E/S

Figure 6 L'interface est sur le bus commun, le choix de l'adresse indique si le processeur s'adresse à la mémoire ou à l'interface. Si sur le plan du matériel ces deux solutions peuvent être très différentes, sur le plan du concept elles sont comparables : un fil supplémentaire correspond de fait à un bit. Dans les deux cas la mémoire et le dispositif d’entrées/sorties sont identifiés par des espaces d’adressage différents.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 11

Page 12: Sylvain tisserant architecture et technologie des ordinateurs

I.3.b Architecture de Harvard Dans cette architecture on sépare physiquement la mémoire des instructions et la mémoire de données. Chacune de ces mémoires est accessible par un bus différent. Il est alors possible d'accéder simultanément aux instructions et aux données, ce qui permet d'augmenter le flux des informations. En première approximation il est donc possible de multiplier la vitesse de la machine par deux, en multipliant par deux la vitesse du processeur tout en conservant le même type de mémoire. En pratique il peut être moins onéreux de mettre deux bus dans une machine que de doubler la vitesse de la mémoire.

P

BI BD

MDMI

Figure 7 Cette architecture a été expérimentée très tôt, puis abandonnée pendant une vingtaine d'années. Elle est à nouveau employée dans certains micro-ordinateurs. Elle est également reprise par l'intermédiaire de deux caches mémoires dans l’architecture de microprocesseurs. Le 68030 fut l’un des premiers à disposer de deux caches consacrés l’un aux instructions et l’autre aux données. Chercher à pouvoir effectuer plusieurs opérations (ici transferts des instructions et des données) en parallèle est un principe très souvent mis en œuvre en architecture des ordinateurs. Par exemple, pour permettre aux interfaces d'E/S de lire ou d'écrire des données en mémoire pendant que le processeur effectue des calculs sur les données précédentes, il est intéressant d'utiliser une mémoire de données accessible depuis deux ports différents.

BI BD1 BD2MI P MD E/S

Figure 8 De cette façon le processeur et l'interface peuvent chacun accéder alternativement à une moitié différente de la mémoire : Phase 1 : le processeur lit des données provenant de la première moitié de la mémoire pendant que l'interface d'Entrées/Sorties range de nouvelles données dans la seconde moitié.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 12

Page 13: Sylvain tisserant architecture et technologie des ordinateurs

Phase 2 : le processeur accède aux données transférées par l'interface lors de la phase 1 et l'interface écrit dans la première moitié de la mémoire.

BI BD1 BD2MI P E/S

BI BD1 BD2MI P E/S

Phase 1

Phase 2

Figure 9

I.3.c Processeur

Sans développer ici les principes de fonctionnement d'un processeur, nous pouvons déjà dire que l'exécution des instructions peut se découper en grandes étapes :

- chargement de l'instruction à exécuter; - décodage de l'instruction; - localisation dans la mémoire des données utilisées par l'instruction; - chargement des données si nécessaire; - exécution de l'instruction; - sauvegarde des résultats à leurs destinations respectives; - passage à l'instruction suivante.

A chacune de ces étapes peut correspondre une unité fonctionnelle. Cette séquence simple peut se compliquer, en particulier si la machine possède des instructions de longueur variable : certaines instructions étant codées sur un mot de la mémoire et d'autres sur plusieurs. Dans ce cas l'unité chargée de la recherche et du chargement de l'instruction doit être capable de reconnaître (ou de pré-décoder) le type de l'instruction pour déterminer s'il lui faut aller chercher la suite. Dans la plupart des processeurs, l'unité centrale de traitement se décompose en :

• l'unité de commande qui contient un dispositif de décodage des instructions (décodeur) et un séquenceur qui contrôle les circuits nécessaires à l'exécution de l'instruction en cours;

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 13

Page 14: Sylvain tisserant architecture et technologie des ordinateurs

• l'unité arithmétique et logique (UAL ou ALU : Arithmetic and Logical Unit) qui exécute des opérations arithmétiques comme l'addition, la soustraction, des décalages, des opérations booléennes (ET, OU, etc…), des comparaisons, etc…

• les registres : mémoire locale très rapide qui permet de stocker des résultats temporaires ou des informations de commande. Parmi ceux-ci on distingue les registres arithmétiques qui servent aux opérations arithmétiques. D'autres registres ont des fonctions particulières. On trouve par exemple :

- le compteur ordinal (CO) qui pointe sur la prochaine instruction à exécuter; - le registre d'instruction (RI) qui contient l'instruction en cours d'exécution; - le registre d'état (PSW : Processor Status Word) qui indique l'état du système :

dépassement, retenue, etc… - une pile et un pointeur de pile (SP : Stack Pointer);

• des chemins de données. Toutes ces unités fonctionnent au même rythme, à une cadence imposée par une horloge, généralement externe à l'unité centrale. A chaque cycle d'horloge, chaque unité va ouvrir ou fermer certaines portes pour déplacer, lire, écrire, comparer, additionner des bits. Ceci se fait en fonction d'ordres donnés par l'unité de contrôle. Ces ordres dépendent évidemment de l'instruction à exécuter. Le tableau suivant rappelle quelques unités utilisées pour exprimer la fréquence de fonctionnement d'un processeur et la durée correspondante des cycles. Ainsi un processeur fonctionnant à 250 MHz a un cycle de 4 ns.

Fréquence Préfixe Hz Cycle Préfixe s 1 kHz kilo 103 1 ms mili 10-3

1 MHz méga 106 1 µs micro 10-6

1 GHz giga 109 1 ns nano 10-9

Table 1

Nous verrons qu'une manière d'améliorer les performances d'une unité centrale est de faire fonctionner ses diverses unités fonctionnelles en parallèle. Cela signifie aller chercher l'instruction suivante alors que le décodeur travaille sur l'instruction en cours. Il y a anticipation. Il faut pour pouvoir profiter de cette technique il faut que les instructions soient exécutées en séquence et donc éviter les ruptures. Il faut donc que la programmation soit adaptée à l'architecture des machines. Il peut également être possible d'exécuter la même instruction simultanément sur plusieurs données. Il suffit d'une seule unité de commandes associée à plusieurs unités de traitement.

I.3.d Mémoires Nous appelons mémoire tout dispositif capable de stocker des informations (instructions et données) de telle sorte que l'organe qui les utilise puisse à n'importe quel moment accéder à l'information qu'il demande.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 14

Page 15: Sylvain tisserant architecture et technologie des ordinateurs

Les informations peuvent être écrites ou lues. Il y a écriture lorsqu'on enregistre des données en mémoire, lecture lorsqu'on sort des informations précédemment enregistrées. La lecture peut être destructive (l'information lue n'est plus en mémoire) ou non. Le temps d'accès est le temps qui s'écoule entre l'instant où a été lancée une opération de lecture en mémoire et l'instant où la première information est disponible. Le temps de cycle représente l'intervalle minimum qui doit séparer deux demandes successives de lecture ou d'écriture. Le temps de cycle est égal ou supérieur au temps d'accès. On appelle cadence de transfert ou débit d'une mémoire, le nombre maximum d'informations lues ou écrites par unité de temps.

Une mémoire est formée d'un certain nombre de cellules, ou cases, contenant chacune une information. Chaque cellule a un numéro qui permet de la référencer et de la localiser. Ce numéro est son adresse. Avec une adresse de n bits il est possible de référencer directement au plus 2n cellules. La capacité d'une mémoire est le nombre total de cellules qu'elle contient. Elle s'exprime en nombre de bits, d'octets (bytes) ou de mots (words). Compte tenu de l'adressage binaire, les capacités des mémoires s'expriment en puissances de deux ou en multiples de 210 = 1024. La table 2 explicite les unités utilisées.

Symbole Préfixe Décimal Binaire 1 k kilo 103 210 = 1024 1 M méga 106 220 = 1048576 1 G giga 109 230 = 1073741824 1 T téra 1012 240 = 1099511627776

Table 2

Dans une mémoire à semi-conducteur, on accède directement à n'importe quelle

information dont on connaît l'adresse, le temps pour obtenir l'information ne dépend pas de l'adresse. On dira que l'accès à une telle mémoire est aléatoire, direct ou encore sélectif. A l'inverse pour accéder à une information sur bande magnétique il faut dérouler la bande en repérant tous les enregistrements jusqu'à ce que l'on trouve celui que l'on adresse. On dit alors que l'accès à l'information est séquentiel. Le temps d'accès est variable selon la position de l'information recherchée. L'accès peut encore être semi-séquentiel : combinaison des accès direct et séquentiel. Pour un disque magnétique par exemple l'accès à la piste est direct, puis l'accès au secteur est séquentiel. Les mémoires associatives permettent l'accès par le contenu.

L'information stockée est volatile si elle risque d'être altérée par un défaut d'alimentation électrique et non volatile dans le cas contraire. En ce qui concerne les mémoires le problème essentiel du constructeur est celui du prix. En effet à un instant donné ce sont toujours les mémoires d'accès le plus rapide qui sont les plus onéreuses et en général le prix augmente plus vite que la vitesse. Or, comme nous l'avons vu, la vitesse d'accès à la mémoire conditionne, dans une large mesure les performances globales d'une machine. C'est pourquoi les ordinateurs actuels sont dotés de plusieurs types de mémoires de tailles et de vitesses différentes.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 15

Page 16: Sylvain tisserant architecture et technologie des ordinateurs

On trouve d'abord des mémoires très rapides (les plus chères), en petit nombre, accessibles immédiatement par le processeur. Ce sont les registres. On trouve ensuite le cache ou anté-mémoire. Accessible en quelques cycles d'horloge (1 ou 2 en général) il contient quelques dizaines de milliers de mots. On a ensuite la mémoire principale ou mémoire centrale. On dispose parfois d'une mémoire d'appui ou d'arrière-plan, intermédiaire entre la mémoire centrale et les mémoires auxiliaires. Elle est constituée de circuits semi-conducteurs de faible prix, dont la vitesse est faible pour des circuits de mémoire mais cent fois plus élevée que celle des disques magnétiques. Toutes ces mémoires sont volatiles. Les disques magnétiques forment le niveau suivant (mémoires auxiliaires ou mémoires de masse) et constituent une mémoire permanente dont les données restent valides quand on coupe l'alimentation électrique. Le dernier niveau correspond à l'archivage des données. Jusqu'à présent ce domaine était l'exclusivité des bandes magnétiques. Ces dernières années ont vu apparaître un nouveau produit qui peut dans certains cas fournir une alternative pour l'archivage. Il s'agit du disque optique numérique. Celui-ci a des densités de stockage de 102 à 104 fois supérieures à celles des supports magnétiques, pour des temps d'accès cinq à dix fois plus grand. La figure suivante schématise cette hiérarchie des mémoires :

mémoire centrale

mémoire d'appui

bande magnétiquedisque optique

registres

cache

mémoire permanente : disque dur

coût

capacité

Figure 10

I.3.e Bus : le squelette des ordinateurs Un bus est un moyen de communication entre les différents éléments constituant une machine. Il s'agit en général d'un ensemble de fils électriques. Les différents éléments sont reliés au bus par des connecteurs, dont l'ensemble constitue un fond de panier. Chaque emplacement (slot) du fond de panier (backplane) peut recevoir une carte électronique (board). Sur un bus circulent différents types de signaux : adresses, données, contrôle, alimentations, etc…

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 16

Page 17: Sylvain tisserant architecture et technologie des ordinateurs

I.3.f Entrées/Sorties Pour pouvoir exécuter une tâche, l'ordinateur doit disposer du programme et des données (s'il y a lieu) qui s'y réfèrent. Dès que le travail est accompli, les résultats du traitement sont communiqués à l'utilisateur. Les techniques d'échange d'informations entre l'ordinateur et son environnement externe sont appelées techniques d'Entrées/Sorties (E/S ou I/O pour Input/Output). L'ordinateur échange des informations non seulement avec des opérateurs humains, par l'intermédiaire de terminaux de communication (consoles avec clavier, souris, imprimantes, lecteurs, etc…), mais également avec des dispositifs variés : appareils de mesures, capteurs, etc…

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 17

Page 18: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 18

Page 19: Sylvain tisserant architecture et technologie des ordinateurs

Portes logiques et algèbre de Boole II.1 Systèmes binaires Actuellement, alors que les ordinateurs analogiques restent du domaine de la recherche, les informations traitées par les systèmes informatiques sont codées sous forme binaire. Un système binaire (signal, circuit, etc…) est un système qui ne peut exister que dans deux états autorisés. Le circuit de la figure 1 est un exemple plus que simpliste de circuit binaire : selon que l'interrupteur S est ouvert ou fermé la tension V0 ne peut être égale qu'à +5 V ou 0 V.

R

+5V

S

V0

Figure 1 La réalité technique est un peu plus complexe avec des interrupteurs commandés réalisés par des transistors. Diverses notations peuvent être utilisées pour représenter ces deux états :

numérique : 1 et 0 (bit : binary digit) logique : vrai et faux (true et false)

oui et non (yes et no) physique : ouvert et fermé

ON et OFF haut et bas (HI et LO, H et L, H et B)

Pour étudier les fonctions de variables binaires on utilise une algèbre développée au XIXème siècle par un mathématicien anglais : Georges Boole. Dans ce chapitre nous nous proposons de présenter les fonctions de base de l'algèbre booléenne ainsi que leurs représentations symboliques en électronique. Nous rappellerons également, sans prétendre à la

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 19

Page 20: Sylvain tisserant architecture et technologie des ordinateurs

rigueur mathématique, les quelques notions élémentaires nécessaires à l'étude des circuits électroniques. L'algèbre de Boole concerne la logique des systèmes binaires. Une variable booléenne ne peut prendre que deux valeurs possibles 0 ou 1. En électronique les deux états d'une telle variable peuvent être associés à deux niveaux de tension : V(0) et V(1) pour les états 0 et 1 respectivement. On distingue les logiques positive et négative selon que V(1) > V(0) ou V(1) < V(0). Ce que nous pouvons résumer dans la table suivante donnant la signification logique des niveaux physiques :

Niveau Logique positive Logique négative H 1 0 L 0 1

Table 1

En pratique un niveau est défini par un domaine en tension ou en courant. Par exemple en technologie TTL, un niveau sera dit haut s'il est compris entre +2 V et +5 V et un niveau sera bas s'il est inférieur à +0.8 V. Dans la plage intermédiaire, l’état est indéterminé. Si les transitions sont inévitables, il est indispensable de traverser cette plage intermédiaire le plus rapidement possible. D’autre part, les signaux doivent être stabilisés avant d’être pris en compte par les circuits. Il y a donc des contraintes temporelles, spécifiées par les chronogrammes des feuilles de données (data sheets) fournis par les constructeurs. Dans ce cours, destiné à des informaticiens, nous n’aborderons que très peu cet aspect pratique de l’électronique.

V(1)

V(0)

V(1)

V(0)

Logique positive Logique négative"0"

"1" "0"

"1"

Figure 2

Nous verrons que dans certains cas (supports magnétiques, lignes de transmission, disques optiques, etc.) l’information peut être portée par les transitions entre deux états.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 20

Page 21: Sylvain tisserant architecture et technologie des ordinateurs

II.2 Porte OU (inclusif) L'opération OU (OR), encore appelée addition logique, a au moins deux entrées. La sortie d'une fonction OU est dans l'état 1 si au moins une de ses entrées est dans l'état 1. La fonction OU, notée +, est représentée par le symbole indiqué sur la figure 3 et est définie par la table de vérité suivante :

A B Y = A + B 0 0 0 0 1 1 1 0 1 1 1 1

Table 2

Une table de vérité donne pour toutes les combinaisons possibles des variables logiques en entrée X, ici X = (A, B), la valeur de la fonction logique f (X).

A

BY

Figure 3 Il est facile de vérifier les propriétés suivantes de la fonction OU :

(A + B) + C = A + (B + C) = A + B + C Associativité A + B = B + A Commutativité A + A = A Idempotence A + 0 = A Elément neutre A + 1 = 1 Elément absorbant

II.3 Porte ET L'opération ET (AND), encore dénommée produit logique ou intersection, a au moins deux entrées. La sortie d'une fonction AND est dans l'état 1 si et seulement si toutes ses entrées sont dans l'état 1. La fonction ET, notée •, est représentée par le symbole indiqué sur la figure 4 et est définie par la table de vérité suivante :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 21

Page 22: Sylvain tisserant architecture et technologie des ordinateurs

A B Y = A • B 0 0 0 0 1 0 1 0 0 1 1 1

Table 3

A

BY

Figure 4 Il est facile de vérifier les propriétés suivantes de la fonction ET :

(A • B) • C = A • (B • C) = A • B • C Associativité A • B = B • A Commutativité A • A = A Idempotence A • 1 = A Elément neutre A • 0 = 0 Elément absorbant

D'autre part, les opérations ET et OU sont distributives l'une par rapport à l'autre :

A • (B + C) = (A • B) + (A • C) Distributivité du ET sur le OU A + (B • C) = (A + B) • (A + C) Distributivité du OU sur le ET

Mentionnons également les propriétés d’absorption :

A + (A • B) = A A • (A + B) = A

En effet :

A + (A • B) = (A • 1) + (A • B) = A • (1 + B) = A • 1 = A A • (A + B) = (A • A) + (A • B) = A + (A • B) = A

II.4 Inverseur : porte NON L'opération NON (NOT) a une seule entrée et une seule sortie. La sortie d'une fonction NON prend l'état 1 si et seulement si son entrée est dans l'état 0. La négation logique est symbolisée par un petit cercle dessiné à l'endroit où une ligne en entrée ou en sortie rejoint un

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 22

Page 23: Sylvain tisserant architecture et technologie des ordinateurs

symbole logique, comme par exemple sur la figure 5. La table 4 donne la table de vérité correspondante.

A Y = A 0 1 1 0

Table 4

A Y

Figure 5 A partir des définitions des fonctions NON, OU et ET nous pouvons déduire :

( ) BABAA

0AA

1AA

AA

+=+

=

=+

=

II.5 Théorèmes de De Morgan De Morgan a exprimé deux théorèmes qui peuvent se résumer sous la forme suivante :

...CBA...CBA

...CBA...CBA

•••

•••

=+++

+++=

Pour vérifier le premier théorème nous remarquons que si toutes les entrées sont à 1 les deux membres de l'équation sont nuls. Par contre si une au moins des entrées est à 0 les deux membres de l'équation sont égaux à 1. Il y a donc égalité quels que soient les états des diverses entrées. Le second théorème se vérifie de la même manière : si toutes les entrées sont à 0 les deux membres de l'équation sont à 1, par contre si au moins une des entrées est à 1 les deux expressions sont à 0. Les théorèmes de De Morgan montrent qu'une fonction ET peut être fabriquée à partir des fonctions OU et NON. De même une fonction OU peut être obtenue à partir des fonctions ET et NON. La figure 6 montre la conversion d'une porte OU en porte ET et réciproquement, utilisant le fait que :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 23

Page 24: Sylvain tisserant architecture et technologie des ordinateurs

BABABA

BABABA

••

==+

+=+=

De même, à partir des théorèmes de De Morgan nous pouvons montrer qu'une porte ET en logique positive fonctionne comme une porte OU en logique négative et vice versa.

A+BA

B

A

BA.B

A

BA.B

A

BA+B

Figure 6 II.6 Portes NON ET et NON OU Une porte NON ET (NAND : NOT AND) est constituée par un inverseur à la sortie d'une porte ET (fig. 7). Une négation à la sortie d'une porte OU constitue une fonction NON OU (NOR : NOT OR) symbolisée sur la figure 8. Leurs tables de vérité respectives sont données par les tables 5 et 6 :

A B BAY •= A B BAY += 0 0 1 0 0 1 0 1 1 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0

Table 5

Table 6

A

BY

Figure 7

A

BY

Figure 8 Comme les transistors qui interviennent comme éléments de base des portes sont par essence des inverseurs, les portes NAND et NOR sont très usitées dans la réalisation des circuits logiques. Grâce aux lois de De Morgan il est possible de réaliser des systèmes logiques avec

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 24

Page 25: Sylvain tisserant architecture et technologie des ordinateurs

uniquement des portes NAND ou NOR. La figure 9 montre, par exemple, comment les portes NOT, OR et AND peuvent être obtenues à partir de portes NOR.

Y=A.BA

B

A Y=A

AB Y=A+B

Figure 9 II.7 Porte OU exclusif La sortie d'une fonction OU exclusif (XOR) à deux entrées est dans l'état 1 si une entrée et seulement une est dans l'état 1. La représentation symbolique d'une fonction XOR (notée ⊕) est donnée sur la figure 10 et sa table de vérité est la suivante :

A B BAY ⊕= 0 0 0 0 1 1 1 0 1 1 1 0

Table 7

A

BY

Figure 10 Nous pouvons formuler de diverses manières la définition précédente : Y est égal à 1 si et seulement si A = 1 ou B = 1 mais pas simultanément. Ce que nous pouvons écrire :

BA⊕=

)BA()BA(BA ••+=⊕

Nous pouvons encore dire est égal à 1 si A = 1 et B = 0 ou si B = 1 et A = 0. Soit : BAY ⊕=

)AB()BA(BA •• +=⊕ Une fonction XOR fournit un comparateur d'inégalité : BAY ⊕= ne vaut 1 que si A et B sont différents. Si A et B sont égaux à 1 ou si A et B sont égaux à 0 alors Y = 0. Ce qui s'écrit :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 25

Page 26: Sylvain tisserant architecture et technologie des ordinateurs

)BA()BA(BA •• +=⊕

La fonction BAYZ ⊕== correspond à un détecteur d'égalité. Nous avons encore la relation suivante qui peut être démontrée en utilisant les théorèmes de De Morgan :

)BA()BA(BA ++=⊕ • A ces quatre relations logiques correspondent quatre circuits réalisant la fonction XOR à partir de portes OR et AND.

AB

AB

AB

AB

Figure 11 Mentionnons également quelques propriétés faciles à vérifier :

BABABABABA

A1AA0A1AA0AA

⊕=⊕=⊕⊕=⊕

=⊕=⊕=⊕=⊕

II.8 Porte à Trois Etats La porte "3 états", ou "tri-state", n'est pas une porte logique au sens strict. Elle est principalement utilisée pour connecter une sortie sur une ligne commune à plusieurs circuits (un bus par exemple). Elle remplace généralement une porte ET. En effet, la mise en parallèle sur une même ligne de plusieurs portes ET introduit des capacités parasites. Ceci augmente les constantes de temps et a pour effet de détériorer les fronts de montée et de descente des signaux. Cela peut

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 26

Page 27: Sylvain tisserant architecture et technologie des ordinateurs

perturber le fonctionnement d'un système. Une porte 3 états est schématisée sur la figure suivante :

A Y

C

Figure 12

C A Y sortie 1 0 0 faible impédance 1 1 1 faible impédance 0 X 0 haute impédance

Table 8

Lorsque la commande C est à 0 l'impédance de sortie est très grande : pratiquement déconnectée. D'autre part, ces portes "3 états" fournissent une amplification de puissance.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 27

Page 28: Sylvain tisserant architecture et technologie des ordinateurs

II.9 Résumé des identités booléennes de base Il est possible de montrer que toute fonction booléenne d'un nombre quelconque de variables peut s'écrire avec les trois fonctions de base ET, OU et NON. Nous avons rassemblé dans la table 9 des relations de base de l'algèbre de Boole qui nous seront utiles par la suite.

OU (A + B) + C = A + (B + C) = A + B + C A + B = B + A A + A = A A + 0 = A A + 1 = 1

Associativité Commutativité Idempotence Elément neutre Elément absorbant

ET (A • B) • C = A • (B • C) = A • B • C A • B = B • A A • A = A A • 1 = A A • 0 = 0

Associativité Commutativité Idempotence Elément neutre Elément absorbant

Distributivité A • (B + C) = (A • B) + (A • C) A + (B • C) = (A + B) • (A + C)

NON AA = 1AA =+ 0AA =•

A + (A • B) = A A • (A + B) = A

A)BA()BA( =++ • BA)BA(A +=+ •

De Morgan

...CBA...CBA

...CBA...CBA

•••

•••

=+++

+++=

OU exclusif )BA()BA(BA ••+=⊕ )AB()BA(BA •• +=⊕

)BA()BA(BA •• +=⊕ )BA()BA(BA ++=⊕ •

BABABABABA

A1AA0A1AA0AA

⊕=⊕=⊕⊕=⊕

=⊕=⊕=⊕=⊕

Table 9

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 28

Page 29: Sylvain tisserant architecture et technologie des ordinateurs

II.10 Ecritures canoniques d'une fonction logique

II.10.a Somme canonique de produits Considérons trois variables booléennes x, y et z. A partir de ces trois variables nous pouvons construire huit produits logiques (ou minterms) Pi=0,7 faisant intervenir x ou x , y ou y et z ou z . Pour chacune des huit combinaisons Ci=0,7 (000, 001, 010, etc…) des variables x, y et z, nous pouvons calculer les valeurs de ces produits. Celles-ci sont rassemblées dans la table 10. Chacun de ces produits prend la valeur 1 pour une et une seule combinaison : Pi vaut 1 uniquement pour la combinaison Ci et 0 pour les autres combinaisons.

P0 P1 P2 P3 P4 P5 P6 P7 Ci x y z zyx zyx zyx zyx zyx zyx zyx zyx0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 2 0 1 0 0 0 1 0 0 0 0 0 3 0 1 1 0 0 0 1 0 0 0 0 4 1 0 0 0 0 0 0 1 0 0 0 5 1 0 1 0 0 0 0 0 1 0 0 6 1 1 0 0 0 0 0 0 0 1 0 7 1 1 1 0 0 0 0 0 0 0 1

Table 10

Pour toute fonction logique de trois variables x, y et z, nous pouvons écrire sa table de vérité, c'est-à-dire expliciter sa valeur pour chacune des huit combinaisons Ci. Considérons, par exemple, la fonction F dont la table de vérité est donnée dans la table 11 :

Ci x y z F P1 + P3 + P4 0 0 0 0 0 0 1 0 0 1 1 1 2 0 1 0 0 0 3 0 1 1 1 1 4 1 0 0 1 1 5 1 0 1 0 0 6 1 1 0 0 0 7 1 1 1 0 0

Table 11

Cette fonction F prend la valeur 1 pour la combinaison C1 comme le produit P1, la combinaison C3 comme P3 et la combinaison C4 comme P4. La fonction F prenant la valeur 0 pour toutes les

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 29

Page 30: Sylvain tisserant architecture et technologie des ordinateurs

autres combinaisons comme les produits P1, P3, P4, nous pouvons donc écrire que F est égale à la fonction :

F = P1 + P3 + P4 Nous pouvons vérifier cette identité dans la table 11. Nous pouvons donc exprimer F en fonction des variables x, y et z sous la forme :

zyxzyxzyxF ++= Cette façon, très générale, d'écrire une fonction booléenne est appelée somme canonique de produits.

II.10.b Produit canonique de sommes Soient encore trois variables binaires x, y et z. Nous pouvons définir huit sommes logiques des trois variables faisant intervenir x ou x , y ou y et z ou z . La table 12 donne les tables de vérité de ces sommes. Nous constatons que chacune de ces fonctions prend la valeur 0 pour une et une seule combinaison.

S0 S1 S2 S3 S4 S5 S6 S7 Ci x y z zyx ++ zyx ++ zyx ++ zyx ++ zyx ++ zyx ++ zyx ++ zyx ++

0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 2 0 1 0 1 1 0 1 1 1 1 1 3 0 1 1 1 1 1 0 1 1 1 1 4 1 0 0 1 1 1 1 0 1 1 1 5 1 0 1 1 1 1 1 1 0 1 1 6 1 1 0 1 1 1 1 1 1 0 1 7 1 1 1 1 1 1 1 1 1 1 0

Table 12

Reprenons l'exemple précédent de la fonction F. Celle-ci vaut 0 pour les combinaisons C0, C2, C5, C6 et C7 en même temps que S0, S2, S5, S6 et S7. La fonction F peut donc être vue comme le produit logique de ces cinq sommes, ce qui est vérifié dans la table 13. Nous pouvons donc exprimer la fonction F sous la forme suivante :

)zyx()zyx()zyx()zyx()zyx(F ++++++++++= •••• Cette écriture est appelée produit canonique de sommes. Celle-ci est moins utilisée que la somme canonique de produits.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 30

Page 31: Sylvain tisserant architecture et technologie des ordinateurs

Ci x y z F S0 • S2 • S5 • S6 • S7 0 0 0 0 0 0 1 0 0 1 1 1 2 0 1 0 0 0 3 0 1 1 1 1 4 1 0 0 1 1 5 1 0 1 0 0 6 1 1 0 0 0 7 1 1 1 0 0

Table 13

II.11 Simplification de l'écriture des fonctions logiques

II.11.a Simplification algébrique Simplifier une expression booléenne c'est lui trouver une forme plus condensée, faisant intervenir moins d'opérateurs et conduisant à une réalisation matérielle plus compacte. On peut simplifier une fonction par manipulation algébrique en utilisant par exemple les relations rassemblées dans la table 9. Considérons la fonction F définie par la table de vérité suivante :

x y z F 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1

Table 14

Nous en déduisons sa forme canonique somme de produits :

zyxzyxzyxzyxF +++= Nous pouvons écrire :

xzzyyx

)zz(yx)yy(zx)xx(zy

)zyxzyx()zyxzyx()zyxzyx(

zyxzyxzyxzyxF

++=

+++++=

+++++=

+++=

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 31

Page 32: Sylvain tisserant architecture et technologie des ordinateurs

Cependant cette méthode, qui demande astuce et chance, n'est pas toujours très aisée à mettre en œuvre. Nous allons maintenant décrire une méthode graphique très utile pour un nombre de variables inférieur à 6.

II.11.b Tableaux de Karnaugh La méthode de simplification de Karnaugh repose sur l'identité :

A)BB(A)BA()BA( =+=+ ••• Elle est basée sur l'inspection visuelle de tableaux disposés de façon telle que deux cases adjacentes en ligne et en colonne ne diffèrent que par l'état d'une variable et une seule. Si une fonction dépend de n variables il y a 2n produits possibles. Chacun de ces produits est représenté par une case dans un tableau. Les figures suivantes donnent la structure des tableaux de Karnaugh pour 2, 3, 4 et 5 variables. Observez comment sont numérotées les lignes et les colonnes : d'une case à sa voisine une seule variable change d'état. Pour 5 variables, deux représentations sont possibles. Dans ce cas le tableau de Karnaugh peut être traité comme deux tableaux 4x4 superposés (fig. 15) ou un seul tableau de 4x8 (fig. 16).

0 1

0

1

xy

Tableau à 2 variables

Figure 13

xyz 00 01 11 10

0

1

Tableau à 3 variables Figure 14

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 32

Page 33: Sylvain tisserant architecture et technologie des ordinateurs

xyzt 00 01 11 10

00

01

11

10

Tableau à 4 variables

Figure 15

00

01

11

10

00 01 11 10ztxy

00

01

11

10

00 01 11 10ztxy

u0 1

Tableau à 5 variables

Figure 16

xyztu 000 001 011 010 110 111 101 100

00

01

11

10

Tableau à 5 variables Figure 17

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 33

Page 34: Sylvain tisserant architecture et technologie des ordinateurs

Chaque case d'un tableau correspond au seul minterm prenant la valeur 1 pour la combinaison identifiée par la ligne et la colonne. Par exemple les trois cases coloriées dans les tableaux de la figure 18 correspondent respectivement aux produits suivants :

tzyxettzyx,tzyx

Il faut comprendre chaque ligne et chaque colonne comme une structure cyclique continue : chaque case a toujours quatre voisins qu'il faut éventuellement chercher à l'autre extrémité de la ligne ou de la colonne. Les tableaux de la figure 18 illustrent ce concept, les croix y matérialisent les voisins des cases coloriées :

00

01

11

10

00 01 11 10ztxy

00

01

11

10

00 01 11 10ztxy

00

01

11

10

00 01 11 10ztxy

Figure 18

Dans le cas de 5 variables chaque case possède cinq voisins. Dans la représentation en tableaux superposés, quatre voisins se situent dans le même plan et le cinquième "à la verticale" dans l'autre plan. Pour la représentation plane de 8 colonnes il faut "replier" le tableau par rapport à la ligne médiane séparant les colonnes 010 et 110, qui définit un axe de symétrie. La figure 19 illustre les 5 cases voisines de la case 10101.

xyztu 000 001 011 010 110 111 101 100

00

01

11

10

Figure 19

Le passage de la table de vérité au tableau de Karnaugh consiste à remplir chaque case avec la valeur de la fonction pour le produit correspondant. Il est possible de ne copier que les 1.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 34

Page 35: Sylvain tisserant architecture et technologie des ordinateurs

La méthode de simplification de Karnaugh consiste à rassembler les cases adjacentes contenant des 1 par groupes de 2, 4 ou 8 termes. Considérons en effet le groupement vertical de deux cases, en rouge, de la figure 20. Il correspond à la somme de deux termes :

tyxtyxG += Il est possible de factoriser le produit x y :

yx)tt(yxG =+= La variable t qui prend les deux valeurs 0 et 1 dans le groupement disparaît. Il ne reste que le produit des variables x et y, qui gardent ici la valeur 1.

Dans un groupement de deux termes on élimine donc la variable qui change d'état et on conserve le produit des variables qui ne changent pas. Dans un groupement de quatre on élimine les deux variables qui changent d'état. Dans un groupement de huit on élimine trois variables, etc…

On cherche à avoir le minimum de groupements, chaque groupement rassemblant le maximum de termes. Une même case peut intervenir dans plusieurs groupements car C + C = C. C'est le cas de la case jaune sur la figure 20. Pour les cases isolées on ne peut éliminer aucune variable. On conserve donc le produit caractérisant la case. L'expression logique finale est la réunion des groupements après élimination des variables qui changent d'état. Reprenons l'exemple de la fonction F définie par la table de vérité 14. La figure 20 donne le tableau de Karnaugh correspondant :

xyt

0

1

00 01 11 10

11

1

1 xt

yt

xy

Figure 20 Nous y observons trois groupements de deux termes, nous pouvons écrire pour la fonction :

xzzyyxF ++= Nous retrouvons le résultat précédent.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 35

Page 36: Sylvain tisserant architecture et technologie des ordinateurs

Considérons une autre fonction F de quatre variables x, y, z et t définie par la table 15. La figure 21 donne le tableau de Karnaugh équivalent. Sur cette figure nous avons également matérialisé les trois groupements possibles : deux groupements de quatre termes, dont un contenant les quatre coins, et un groupement de deux termes. Cette méthode nous permettent d'écrire :

tzytyyxF ++=

x y z t F 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0

Table 15

00 01 11 10

00

01

11

10

xyzt

1

1

1

1

1

1 1

1

Figure 21

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 36

Page 37: Sylvain tisserant architecture et technologie des ordinateurs

II.12 Symboles logiques normalisés IEEE/ANSI Nous utilisons dans ce cours les symboles logiques standards encore très fréquemment rencontrés dans l’industrie de l’électronique numérique. Cependant un ensemble de nouveaux symboles normalisés a été introduit en 1984. Il s’agit de la norme IEEE/ANSI 91-1984. Cette nouvelle norme a pour objectif de faciliter la représentation de circuits intégrés plus compliqués que les simples portes que nous utilisons ici. Pour être le plus complet possible nous présentons ici un extrait de ces symboles normalisés :

Porte OU 1

Porte ET &

Porte NON 1

Porte OU exclusif = 1

Figure 22

II.13 Entrée trigger de Schmitt Nous avons mentionné au début de ce chapitre que les niveaux haut et bas sont souvent caractérisés par deux seuils en tension et sont séparés par une bande indéterminée. Les fronts montants et descendants des signaux doivent alors être suffisamment rapides de manière à traverser cette zone de basculement le plus vite possible. Sinon nous pouvons observer des indéterminations avec des oscillations. C’est ce que nous observons sur le chronogramme schématisé sur la figure 24. Il représente la variation de la sortie Y (en bas) en fonction du signal d’entrée X (en haut) d’un circuit logique très simple. Nous avons schématisé des fronts lents et des parasites. Le signal de sortie ne correspond pas à ce que nous voudrions.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 37

Page 38: Sylvain tisserant architecture et technologie des ordinateurs

X Y

Figure 23

P I P I

Figure 24 Pour éviter ces problèmes nous pouvons utiliser un "Trigger de Schmitt" qui déclenche sur deux seuils différents selon que le signal monte ou descend. C’est ce que nous avons schématisé sur la figure 25. La transition 0 → 1 du signal de sortie est provoquée par un signal en entrée montant et passant au-dessus du seuil haut VH. La transition 1 → 0 du signal de sortie est provoquée par un signal en entrée descendant et passant au-dessous du seuil bas VB. De cette façon nous obtenons un signal de sortie conforme à nos vœux et exempt de parasites.

Figure 25

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 38

Page 39: Sylvain tisserant architecture et technologie des ordinateurs

Les circuits logiques pour lesquels les entrées sont filtrées par un trigger de Schmitt sont identifiés par le symbole présenté sur la figure 26. Celui-ci est ajouté à l’intérieur du symbole de la porte considérée.

X Y

Figure 26

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 39

Page 40: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 40

Page 41: Sylvain tisserant architecture et technologie des ordinateurs

Logique combinatoire Dans ce chapitre nous nous intéressons à une famille de circuits logiques pour lesquels la sortie dépend uniquement des états des entrées. III.1 Addition binaire

III.1.a Demi-additionneur Addition et soustraction sont deux opérations arithmétiques de base. Commençons par l'addition de deux nombres binaires, la soustraction sera étudiée dans le prochain paragraphe. En base 2 l'addition de deux bits s'écrit :

=+

=+

=+

=+

1011

0101

0110

0000

Comme en décimal, nous devons donc tenir compte d'une éventuelle retenue (carry). La figure 1 montre la décomposition de l'addition de deux nombres binaires de quatre bits.

a3 a aa 012

bb bb3 2 1 0

s3 2 1 0s ss

r3 2 1 0r rr

nombre A

nombre B

somme : S = A + B

retenues

+

Figure 1 L'addition des deux bits de plus bas poids (LSB : Least Significant Bit) a0 et b0, donne un résultat partiel s0 et une retenue r0. On forme ensuite la somme des deux bits a1 et b1 et de la retenue r0.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 41

Page 42: Sylvain tisserant architecture et technologie des ordinateurs

Nous obtenons un résultat partiel s1 et une retenue r1. Et ainsi de suite, nous obtenons un résultat sur quatre bits S et une retenue r3. Considérons la cellule symbolisée sur la figure 2, comptant deux entrées A et B, les deux bits à sommer, et deux sorties D le résultat de la somme et C la retenue.

A B

HA

C D

Figure 2 Ce circuit, qui permettrait d'effectuer l'addition des deux bits de plus bas poids est appelé demi-additionneur (Half-Adder). Ecrivons la table de vérité de celui-ci :

A B C D 0 0 0 0 0 1 0 1 1 0 0 1 1 1 1 0

Table 1

Si nous écrivons ces deux fonctions sous leur forme canonique il vient :

=+=

BACBABAD

Nous reconnaissons pour la sortie D une fonction OU exclusif, donc :

=⊕=BAC

BAD

Ce qui peut être réalisé par le circuit schématisé sur le logigramme de la figure 3.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 42

Page 43: Sylvain tisserant architecture et technologie des ordinateurs

AB D

C

Figure 3

III.1.b Additionneur Il faut en fait tenir compte de la retenue des bits de poids inférieurs, un circuit additionneur doit donc comporter trois entrées et deux sorties, comme représenté sur la figure 4.

A B

FA

CS

R

Figure 4 Ce serait possible en combinant deux demi-additionneurs comme présenté par la figure 5. En pratique pour minimiser le nombre de composants, ou de portes dans un circuit intégré, un tel additionneur est réalisé directement.

HA

HAC2

C

S

1

1

R

A

B

S

C

Figure 5 Les entrées A et B représentent les bits à additionner et R le report de la retenue de l'addition des bits de poids inférieurs. La sortie S représente le résultat de la somme et C la retenue. La table de vérité de ce circuit est la suivante :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 43

Page 44: Sylvain tisserant architecture et technologie des ordinateurs

A B R S C 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

Table 2

A partir de cette table nous pouvons écrire pour S et C les expressions booléennes suivantes :

+++=

+++=

RBARBARBARBAC

RBARBARBARBAS

Nous pouvons simplifier l'expression de C en utilisant un tableau de Karnaugh :

ABR 00 01 11 10

0

1 1

1

1 1

Figure 6

Nous en déduisons :

C = A B + A R + B R Le bit de carry est égal à 1 si au moins deux des entrées sont à 1. D'autre part, nous pouvons remarquer qu'intervertir les 0 et les 1 dans la table 2 revient à permuter les lignes 1 et 8, 2 et 7, 3 et 6, 4 et 5. La table de vérité reste globalement invariante par inversion des entrées et des sorties, nous avons donc :

RBRABAC ++= A partir de cette relation, qui peut également être démontrée en appliquant l’algèbre de Boole, nous pouvons écrire :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 44

Page 45: Sylvain tisserant architecture et technologie des ordinateurs

=

++=++⇒=

=

RBACR

RBARBARBAC)RBA(RBACB

RBACA

Ce qui nous permet de réécrire l'expression de S :

RBAC)RBA(S +++= La figure 7 donne un exemple de réalisation d'un additionneur 1 bit basé sur deux portes AOI (AND OR INVERT), c'est-à-dire un ensemble de portes ET suivies d'une porte NON-OU.

A B R

S

C

Figure 7

III.1.c Addition en parallèle L'addition de nombres comptant plusieurs bits peut se faire en série (bit après bit) ou en parallèle (tous les bits simultanément). La figure 8 montre l'exemple d'un additionneur 4 bits comptant quatre "Full Adders", comparables à celui schématisé figure 7, montés en parallèle ou en cascade. Chaque additionneur FAi est affecté à l'addition des bits de poids i. L'entrée correspondant au report de retenue pour FA0 est imposée à 0 (en logique positive). La retenue

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 45

Page 46: Sylvain tisserant architecture et technologie des ordinateurs

finale C indique un dépassement de capacité si elle est égale à 1. Le temps d'établissement du résultat correspondant au temps de propagation des retenues au travers des diverses cellules. Si δt est le temps réponse d'une cellule, la sortie S0 et la retenue R0 sont valables après un retard δt, la sortie S1 et la retenue R1 ne sont correctes qu'après un retard 2 δt, et ainsi de suite. La figure 9 présente un exemple de réalisation logique d'un additionneur de deux mots de 2 bits.

A B

FA

C S

3

3 3

3

FA2 FA1 FA0

A AA2 1 0B BB2 1 0

S SS 012

Figure 8

RA B0 0 A1 1B

S0 S1

C1

Figure 9

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 46

Page 47: Sylvain tisserant architecture et technologie des ordinateurs

III.1.d Addition séquentielle Dans un additionneur séquentiel chacun des nombres A et B est représenté par un train d'impulsions (figure 10) synchrones par rapport à un signal d'horloge. L'ordre chronologique d'arrivée des impulsions correspond à l'ordre croissant des poids : le bit le moins significatif se présentant le premier. Ces impulsions sont injectées sur les deux lignes d'entrée d'un additionneur (figure 11). A chaque cycle d'horloge, la retenue provenant des bits de poids inférieurs doit être mémorisée (par exemple, à l'aide d'une bascule D qui sera étudiée dans le chapitre suivant). Un additionneur parallèle est plus rapide mais nécessite plus de composants.

A = 01101

B = 01011

D = 11000

LSB

20 2 2 22 2 3 41 t

Figure 10

A B

FA

CS

R

TD

Figure 11

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 47

Page 48: Sylvain tisserant architecture et technologie des ordinateurs

III.2 Soustraction

III.2.a Demi-soustracteur La table de vérité pour un demi-soustracteur (ne tenant pas compte d'une éventuelle retenue provenant des bits de poids inférieurs) est la suivante :

A B D C 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0

Table 3

Où D représente le résultat de la soustraction A − B et C la retenue. Nous en déduisons les expressions logiques définissant D et C :

=

⊕=+=

BAC

BABABAD

et le schéma correspondant :

AB D

C

Figure 12

Nous pourrions maintenant étudier un soustracteur prenant en compte la retenue. Nous allons plutôt tirer parti de certaines propriétés de la numération binaire pour traiter de la même manière l'addition et la soustraction.

III.2.b Additionneur-soustracteur Nous savons qu'avec un mot de n bits nous pouvons représenter un entier positif dont la valeur est comprise entre 0 et 2n − 1. Le complémentaire d'un mot de n bits est obtenu entre prenant le complément de chacun des n bits. Ainsi, si nous sommons un nombre et son complément nous obtenons un mot dont tous les bits sont à 1. C'est-à-dire :

12AA n −=+

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 48

Page 49: Sylvain tisserant architecture et technologie des ordinateurs

Attention : dans ce paragraphe le signe + représente l'opération addition et non la fonction logique OU. Nous pouvons encore écrire :

n21AA −+=− Mais sur n bits l'entier 2n est identique à 0 :

)bitsn(02n ≡ C'est-à-dire qu'il est possible d’écrire un nombre entier négatif comme le "complément à 2" de sa valeur absolue :

1AA +=− Nous reviendrons sur les divers codages des entiers signés plus tard. Nous pouvons utiliser cette propriété pour écrire la soustraction de deux mots de n bits sous la forme suivante :

)bitsn(1BA21BABA n ++≡−++=− Ce résultat conduit au schéma de principe présenté sur la figure 13 combinant les fonctions addition et soustraction. Celui-ci est basé sur l'emploi d'un additionneur n bits et d'un multiplexeur à deux lignes d'entrée. Nous étudierons ce type de circuit un peu plus loin dans ce chapitre. Selon le code opération O (0 pour une addition et 1 pour une soustraction) ce multiplexeur permet de sélectionner une des deux entrées, B ou son complémentaire. Le code opération est également injecté sur l'entrée report de retenue de l'additionneur. Pour simplifier le schéma et éviter de représenter n lignes de connexion parallèles, on ne matérialise qu'une seule ligne. Celle-ci est barrée et accompagnée d'une valeur qui indique le nombre réel de connexions.

n

n

nn

n

n1

0C

DA

B

O

ADD

Figure 13

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 49

Page 50: Sylvain tisserant architecture et technologie des ordinateurs

III.3 Comparaison On rencontre très souvent la nécessité de comparer deux entiers (A = B, A > B ou A < B). Ecrivons la table de vérité correspondant à ces trois fonctions de comparaison de 2 bits. La fonction C doit être égale à 1 si et seulement si A > B, la fonction D si et seulement si A < B et la fonction E si et seulement si A = B. Ce qui nous donne :

A B C (A > B) D (A < B) E (A = B) 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1

Table 5

Nous en déduisons les expressions logiques de C, D et E :

+=+=⊕=

=

=

DCBABABAE

BAD

BAC

La figure 14 présente le diagramme d'un bloc logique comparant deux bits A et B.

AB

C

E

D

Figure 14 III.4 Contrôle de parité La parité d'un mot binaire est définie comme la parité de la somme des bits, soit encore :

- parité paire (ou 0) : nombre pair de 1 dans le mot; - parité impaire (ou 1) : nombre impair de 1 dans le mot.

La fonction OU-exclusif donne la parité d'un sous-ensemble de deux bits. Le contrôle de parité est basé sur la constatation que le mot de n+1 bits formé en adjoignant à un mot de n bits son bit de parité est toujours de parité 0. La figure 15 représente le diagramme logique d'un générateur-

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 50

Page 51: Sylvain tisserant architecture et technologie des ordinateurs

contrôleur de parité pour 4 bits. Si l'entrée P' est imposée à 0 ce circuit fonctionne comme générateur de parité : la sortie P représente la parité du mot composé par les bits A, B, C et D.

P

ABCDP'

Figure 15

Le contrôle de la parité est utilisé, par exemple, pour augmenter la fiabilité d'un système

de transmission ou de stockage de données. La figure 16 montre l'utilisation du circuit précédent en générateur de parité du côté de l'émission et contrôleur de parité du côté de la réception. La sortie P2 doit être à 0 pour chaque mot transmis, sinon cela indique un problème de transmission.

Emetteur

A

CDP'

PB

Récepteur

A

CDP'

PB

P2

Figure 16 Remarquons cependant que la parité ne permet de détecter qu'un nombre impair de bits en erreur dans un mot. Par ailleurs il ne permet pas corriger les erreurs détectées. Pour ce faire il faut utiliser des codes correcteurs d'erreur qui nécessitent plusieurs bits supplémentaires. III.5 Décodage Dans un système numérique les instructions, tout comme les nombres, sont transportées sous forme de mots binaires. Par exemple un mot de 4 bits peut permettre d'identifier 16 instructions différentes : l'information est codée. Très souvent l'équivalent d'un commutateur à 16 positions permet de sélectionner l'instruction correspondant à un code. Ce processus est appelé décodage. La fonction de décodage consiste à faire correspondre à un code présent en entrée sur n lignes une seule sortie active parmi les N = 2n sorties possibles. A titre d'exemple, nous allons étudier le décodage de la représentation DCB des nombres.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 51

Page 52: Sylvain tisserant architecture et technologie des ordinateurs

III.5.a Représentation DCB (Décimale Codée Binaire) Le code DCB (ou en anglais BCD : Binary Coded Decimal) transforme les nombres décimaux en remplaçant chacun des chiffres décimaux par 4 chiffres binaires. Cette représentation conserve donc la structure décimale : unités, dizaines, centaines, milliers, etc… Chaque chiffre est codé sur 4 bits selon le code de la table 6 :

Décimal DCB 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001

Table 6

Par exemple le nombre décimal 294 sera codé en DCB : 0010 1001 0100. Ce type de codage permet, par exemple, de faciliter l'affichage en décimal du contenu d'un compteur. Pour ce faire on peut utiliser des tubes de Nixie, contenant 10 cathodes ayant chacune la forme d'un chiffre (fig. 17) ou des afficheurs lumineux à sept segments (fig. 18).

centaines

décodeur

4

10

dizaines

4

unités

4

Nixie

10

Nixie

10

Nixie

décodeur décodeur

Figure 17

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 52

Page 53: Sylvain tisserant architecture et technologie des ordinateurs

La fonction de chaque décodeur est d'activer une des dix lignes en sortie et une seule en fonction du code présent sur les quatre entrées. Par exemple, si ce code est égal à 5, la 6ème ligne de sortie est mise dans l'état 1 et le chiffre 5 est affiché par le tube de Nixie.

centaines

transcodeur

4

7

dizaines

transcodeur

4

7

unités

transcodeur

4

7

Figure 18

La fonction de chacun des transcodeurs est de positionner à 1 les lignes de sortie correspondant aux segments à allumer selon de code porté par les quatre lignes d'entrée. De manière générale, un transcodeur fait correspondre à un code A en entrée sur n lignes, un code B en sortie sur m lignes.

III.5.b Décodeur DCB-décimal Nous allons étudier l'exemple d'un décodeur DCB-décimal. La table de vérité de ce décodeur est très simple :

D C B A L0 L1 L2 L3 L4 L5 L6 L7 L8 L9 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1

Table 7

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 53

Page 54: Sylvain tisserant architecture et technologie des ordinateurs

A chacune des lignes de sortie nous pouvons associer un produit prenant en compte chacune des quatre entrées ou leur complément. Ainsi la ligne 5 correspond à :

DCBA D'autre part, on souhaite souvent n'activer les lignes de sortie qu'en présence d'un signal de commande global (strobe ou enable). Ce signal S est mis en coïncidence sur chacune des dix portes de sortie. Dans l'exemple suivant, si S est dans l'état 0 le décodeur est bloqué et tous les sorties sont également dans l'état 0.

0

1

8

9

S A B C D

Figure 19 III.6 Multiplexage Le multiplexage est un dispositif qui permet de transmettre sur une seule ligne des informations en provenance de plusieurs sources ou à destination de plusieurs cibles. La figure 20 en présente une analogie mécanique avec deux commutateurs à plusieurs positions. Choisir une ligne revient à définir l'angle du levier ou une adresse.

multiplexeur démultiplexeur

Figure 20

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 54

Page 55: Sylvain tisserant architecture et technologie des ordinateurs

III.6.a Démultiplexeur Un démultiplexeur est un circuit comptant une entrée et N sorties et qui met en relation cette entrée avec une sortie et une seule. Pour pouvoir sélectionner cette sortie il faut également des lignes d'adressage : le code porté par ces lignes identifie la ligne de sortie à utiliser. Ce circuit est très proche d'un décodeur. Considérons un démultiplexeur avec quatre lignes de sortie. Il faut deux lignes d'adresse. Supposons que nous souhaitons également valider les données avec un signal de contrôle E (pour laisser par exemple le temps aux niveaux d'entrée de se stabiliser). Par convention nous choisissons de prendre en compte les données pour E = 0.

E B A Y0 Y1 Y2 Y3 Produit 0 0 0 D 0 0 0 DEBA 0 0 1 0 D 0 0 DEBA 0 1 0 0 0 D 0 DEBA 0 1 1 0 0 0 D DEBA 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0

Table 8

De cette table nous déduisons le logigramme suivant :

0

1

2

3

A B

DE

D : donnéesE : enable(A, B) : adresse

Figure 21

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 55

Page 56: Sylvain tisserant architecture et technologie des ordinateurs

Il existe sous forme de circuits intégrés des démultiplexeurs avec 2, 4 ou 16 lignes de sortie. Pour constituer des démultiplexeurs d'ordre supérieur on peut être amené à cascader des démultiplexeurs. Par exemple un démultiplexeur avec 32 sorties peut être réalisé avec un "tronc" de 4 sorties et 4 "branches" de 8 sorties :

0

7

0

7

0

7

0

7

S

E D

C B AA B C D E : adresseS : données

Figure 22

III.6.b Multiplexeur Un multiplexeur, réalise l'opération inverse. Il sélectionne une entrée parmi N et transmet l'information portée par cette ligne à un seul canal de sortie. Considérons un multiplexeur à quatre entrées, donc deux lignes d'adressage, et une ligne de validation. La table de vérité de ce circuit est donnée par la table 9. De cette table nous déduisons une expression logique pour la sortie :

3210 XEBAXEBAXEBAXEBAY +++= Cette expression correspond au schéma présenté sur la figure 23.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 56

Page 57: Sylvain tisserant architecture et technologie des ordinateurs

E B A Y 0 0 0 X0 0 0 1 X1 0 1 0 X2 0 1 1 X3 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 0

Table 9

Y

X

X

X

X

0

2

3

1

E A B

Figure 23 Tout comme pour les démultiplexeurs on peut cascader plusieurs multiplexeurs pour obtenir un multiplexeur d'ordre supérieur. La figure 24 montre comment un multiplexeur à 32 entrées peut être réalisé à partir de quatre multiplexeurs à 8 entrées et d'un multiplexeur à 4 entrées.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 57

Page 58: Sylvain tisserant architecture et technologie des ordinateurs

Y

ED

A B C

24

31

16

23

8

15

0

7

A B C D E : adresseY : sortie

Figure 24

III.6.c Conversion parallèle-série Considérons un mot de n bits (par exemple 4) présent en parallèle sur les entrées d'un multiplexeur :

- X0 ≡ bit correspondant à 20; - X1 ≡ bit correspondant à 21; - X2 ≡ bit correspondant à 22; - X3 ≡ bit correspondant à 23.

Supposons que les lignes d'adresse A et B soient connectées aux sorties d'un compteur de période T, nous aurons en fonction du temps :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 58

Page 59: Sylvain tisserant architecture et technologie des ordinateurs

t B A Y

[0,T] 0 0 X0 [T,2T] 0 1 X1 [2T,3T] 1 0 X2 [3T,4T] 1 1 X3 [4T,5T] 0 0 X0

Table 10

Les bits X0, X1, X2 et X3 se retrouvent en série dans le temps sur la sortie Y du multiplexeur.

III.6.d Réalisation d’une fonction logique Un multiplexeur peut être utilisé pour réaliser une fonction logique. Il permet en effet une transcription directe de la table de vérité. Considérons par exemple la fonction de quatre variables logiques F(x, y, z, t) définie par la table suivante :

x y z t F Entrée du multiplexeur

0 0 0 0 1 X0 0 0 0 1 0 X0 0 0 1 0 1 X2 0 0 1 1 0 X3 0 1 0 0 0 X4 0 1 0 1 1 X5 0 1 1 0 0 X6 0 1 1 1 0 X7 1 0 0 0 1 X8 1 0 0 1 1 X9 1 0 1 0 1 X10 1 0 1 1 1 X11 1 1 0 0 0 X12 1 1 0 1 1 X13 1 1 1 0 0 X14 1 1 1 1 0 X15

Table 11

Il est possible d’utiliser un multiplexeur à 16 entrées. Il suffit de connecter les variables logiques x, y, z et t sur les entrées d’adresse et de mettre chacune des entrées Xk à 0 ou 1 selon la table de vérité.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 59

Page 60: Sylvain tisserant architecture et technologie des ordinateurs

1

F

x y z t

X0

15X

Figure 25

III.7 Encodage Nous venons d'étudier le principe du décodage, passons à l'opération inverse ou encodage. Un encodeur est un système qui comporte N lignes d'entrée et n lignes de sortie. Lorsqu’une des lignes d'entrée est activée l'encodeur fournit en sortie un mot de n bits correspondant au codage de l'information identifiée par la ligne activée. Considérons un encodeur transformant un nombre décimal en son équivalent en code DCB. Il comportera donc 10 entrées (0 à 9) et 4 sorties. Nous pouvons par exemple imaginer que chacune des dix lignes d'entrée peut être reliée à une touche d'un clavier. La table 12 correspond à la table de vérité de cet encodeur. A partir de cette table nous pouvons écrire les expressions logiques définissant les sorties à partir des entrées.

W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 Y3 Y2 Y1 Y0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1

Table 12

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 60

Page 61: Sylvain tisserant architecture et technologie des ordinateurs

+=+++=+++=

++++=

983

76542

76321

975310

WWYWWWWYWWWWY

WWWWWY

En effet Y0 est égal à 1 quand la ligne W1 est dans l'état 1, ou la ligne W3, ou la ligne W5, ou la ligne W7, ou la ligne W9. La ligne Y0 est nulle dans tous les autres cas. Il est possible de réaliser ces fonctions OU avec des diodes selon le montage de la figure suivante :

Y Y Y Y0123

+-

5 V

W9

W

W

W

W

W

W

7

6

5

4

3

8

0

1

2

W

W

W

Figure 26

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 61

Page 62: Sylvain tisserant architecture et technologie des ordinateurs

En effet considérons le circuit de la figure 27 :

A

B S

DA

DB

Figure 27

A B S 0 0 DA et DB bloquées 0 +V 0 DA passante/DB bloquée +V 0 +V DA bloquée/DB passante +V +V +V DA et DB passantes +V

Si nous traduisons la signification logique des niveaux haut et bas en logique positive, au circuit de la figure 27 correspond la table de vérité 13. La fonction réalisée est donc un OU inclusif.

A B S 0 0 0 0 1 1 1 0 1 1 1 1

Table 13

La figure 26 représente un exemple de réalisation d’un encodeur DCB réalisé avec des diodes. Le bon fonctionnement de ce codeur suppose qu'une seule ligne d'entrée peut être dans l'état 1.

Par contre, si plusieurs entrées sont actives simultanément le résultat pourra ne pas avoir de signification. Par exemple, si les deux lignes W7 et W8 sont dans l'état 1 (frappe simultanée des deux touches), il en sera de même pour les quatre sorties. Pour éviter ce problème on utilise un encodeur prioritaire. Pour ce type de circuit si plusieurs lignes d'entrée sont actives simultanément le résultat correspondant à une seule parmi celles-ci est affiché en sortie. La règle peut être, par exemple, de mettre en sortie le code correspondant à la ligne d'entrée d'indice le plus élevé. Par exemple, si W7 et W8 sont dans l'état 1 l'encodeur prioritaire donne en sortie le code correspondant à W8. La table de vérité correspondant à ce choix est donnée par la table 14. Chaque croix indique que le code en sortie doit être indépendant de l'état de l'entrée concernée.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 62

Page 63: Sylvain tisserant architecture et technologie des ordinateurs

W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 Y3 Y2 Y1 Y0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 X 1 0 0 0 0 0 0 0 0 0 0 0 1 X X 1 0 0 0 0 0 0 0 0 0 1 0 X X X 1 0 0 0 0 0 0 0 0 1 1 X X X X 1 0 0 0 0 0 0 1 0 0 X X X X X 1 0 0 0 0 0 1 0 1 X X X X X X 1 0 0 0 0 1 1 0 X X X X X X X 1 0 0 0 1 1 1 X X X X X X X X 1 0 1 0 0 0 X X X X X X X X X 1 1 0 0 1

Table 14

Alors que les expressions logiques définissant les lignes de sortie Yi ne dépendaient que des 1 dans la table 11, il faut ici tenir compte des 0. Par exemple pour Y0 nous avons :

998798765

98765439876543210

WWWWWWWWW

WWWWWWWWWWWWWWWWY

+++

+=

Nous pouvons mettre le complémentaire de W9 en facteur dans les quatre premiers termes, puis en utilisant l'identité :

BABAA +=+ il vient, après factorisation du complément de W8 :

9776576543765432180 W)WWWWWWWWWWWWWWWW(WY ++++= Soit encore :

9765654365432180 W)WWWWWWWWWWWWW(WY ++++=

97655435432180 W)WW)WWWWWWWWW((WY ++++=

976543432180 W)WW)WWWWWWW((WY ++++=

97654332180 W)WW)WW)WWWW(((WY ++++=

9765432180 W)WW)WW)WWW(((WY ++++=

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 63

Page 64: Sylvain tisserant architecture et technologie des ordinateurs

Soit en réorganisant l'ordre des termes :

)))WWW(WW(WW(WWY 2134567890 ++++= Pour la ligne Y1 nous avons :

9879876

9876543987654321

WWWWWWW

WWWWWWWWWWWWWWWY

++

+=

Soit en factorisant :

))WW)WWW(WW(WW(WWY 543236677981 +++= En utilisant toujours la même identité nous pouvons simplifier cette expression, il vient en réordonnant les termes :

))WW(WWWW(WWY 234567891 +++= Pour Y2 nous devons écrire :

9879876987659876542 WWWWWWWWWWWWWWWWWWY +++= Soit encore :

)))WWW(WW(WW(WWY 4556677892 +++= En utilisant toujours la même identité il vient :

)WWWW(WWY 4567892 +++= Enfin pour Y3 nous avons :

899983 WWWWWY +=+=

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 64

Page 65: Sylvain tisserant architecture et technologie des ordinateurs

Logique séquentielle IV.1 Logique séquentielle asynchrone et synchrone Dans le chapitre précédent portant sur la logique combinatoire nous avons fait abstraction du temps : les signaux de sortie ne dépendaient que des états des variables d'entrée. Pour les circuits de logique séquentielle nous devons tenir compte de l'état du système. Ainsi les sorties dépendent des entrées mais également de l'état du système. Celui-ci dépend aussi des entrées. Si nous notons Q l'état d'un système séquentiel, X ses entrées et Y ses sorties, nous avons de manière générale :

=

=

)Q,X(gY

)Q,X(fQ

La logique séquentielle permet de réaliser des circuits dont le comportement est variable avec le temps. L'état d'un système constitue une mémoire du passé. Lorsque les changements d'état des divers composants d'un circuit séquentiel se produisent à des instants qui dépendent des temps de réponse des autres composants et des temps de propagation des signaux on parle de logique séquentielle asynchrone. Cependant les retards peuvent ne pas être identiques pour toutes les variables binaires et conduire à certains aléas. Ceux-ci peuvent être évités en synchronisant la séquence des diverses opérations logiques sur les signaux périodiques provenant d'une horloge. La logique séquentielle est alors dite synchrone : tous les changements d'état sont synchronisés sur un signal de contrôle. Nous commençons notre étude par celle des bascules, éléments de base des circuits séquentiels. Puis nous étudierons les registres et les compteurs. IV.2 Les bascules Une bascule (flip-flop) a pour rôle de mémoriser une information élémentaire. C'est une mémoire à 1 bit. Une bascule possède deux sorties complémentaires Q et Q . La mémorisation fait appel à un verrou (latch) ou système de blocage, dont le principe de rétro-action peut être représenté de la façon suivante :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 65

Page 66: Sylvain tisserant architecture et technologie des ordinateurs

Q

Q

A

B

Figure 1

Nous pouvons vérifier :

=⇒=⇒=⇒=⇒=

=⇒=⇒=⇒=⇒=

)0Q()1A()1Q()0B()0Q(

)1Q()0A()0Q()1B()1Q(

Une bascule ne peut donc être que dans deux états : "1" )0Q,1Q ==( et "0" )1Q,0Q( == . Les interconnexions du verrou interdisent les deux autres combinaisons : 1Q ==Q ou 0Q ==Q . Ce type de circuit, qui n'a que deux états stables possibles, est encore appelé circuit bistable. Un verrou permet de conserver un état, il nous faut maintenant savoir comment charger cet état.

IV.2.a Les bascules R-S Les verrous les plus fréquemment rencontrés sont réalisés avec deux portes NOR ou NAND. Considérons dans un premier temps le circuit suivant :

R

S

Q

Q

Figure 2

La table 1 donne la table de vérité correspondante. Si on applique S = 1 et R = 0 ou S = 0 et R = 1 on impose l'état de la sortie Q respectivement à 1 ou à 0, la sortie Q prenant la valeur complémentaire. Cet état se maintient lorsque les deux entrées retournent à 0. La configuration S = R = 1 est à proscrire car ici elle conduit à 0Q ==Q , ce qui est inconsistant logiquement avec notre définition. Mais surtout, lorsque R et S reviennent à 0, l'état QQ = étant incompatible avec les interconnexions, l'une de ces deux sorties va reprendre l'état 1, mais il est impossible de

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 66

Page 67: Sylvain tisserant architecture et technologie des ordinateurs

prédire laquelle : la configuration S = R = 1 conduit à une indétermination de l'état des sorties et est donc inutilisable. La représentation d'une bascule RS est donnée sur la figure 4.

S R Q Q 0 0 Q Q Sorties inchangées 1 0 1 0 Set : Remise à Un : RAU 0 1 0 1 Reset : Remise à Zéro : RAZ 1 1 0 0 A proscrire

Table 1

Considérons maintenant la bascule réalisée avec des portes NON-ET.

Q

Q

S

RR

S

Figure 3 Il lui correspond la table de vérité suivante :

S R S R Q Q 0 0 1 1 Q Q 1 0 0 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1

Table 2

L'utilisation des deux inverseurs sur les lignes d'entrée nous permet de retrouver une table de vérité comparable à celle de la bascule RS précédente.

S

R

Q

Q

Figure 4

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 67

Page 68: Sylvain tisserant architecture et technologie des ordinateurs

IV.2.b Dispositif anti-rebond On est souvent amené à commander un état physique à l'aide d'un bouton poussoir ou d'un inverseur (par exemple les touches d'un clavier). Cependant lorsqu'on ferme un interrupteur le contact n'est pas franc instantanément et on peut observer une série de rebonds du signal avant d'obtenir la position fermée (fig. 5). Pour éviter ce défaut on réalise un montage équivalent à celui présenté sur la figure 6 faisant appel à un inverseur et une bascule.

+5 V

S

I

I

S

t

t

Figure 5

S

R

Q

+5 V

I

t t3 4t t1 2

I

R

S

Q

2 1

1 2 1

Figure 6

Supposons l'interrupteur initialement dans la position 1 comme indiqué par la figure 6 : l'entrée S est à la masse donc, en logique positive, dans l'état logique "0" et l'entrée R sous tension c'est-à-dire dans l'état logique "1". La sortie Q se trouve donc dans l'état "1". A l'instant t1 nous basculons l'interrupteur de la position 1 à la position 2. Dès que le contact est ouvert en 1

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 68

Page 69: Sylvain tisserant architecture et technologie des ordinateurs

l'entrée S se trouve sous tension et passe dans l'état logique "1". Par contre le contact en 2 peut s'établir avec un léger retard dû au mouvement du contacteur et ne pas être immédiatement franc. L'entrée R passe dans l'état "0" à t2, quelques rebonds peuvent suivre. A t2 lorsque les entrées se trouvent dans la configuration S = 1 et R = 0 la sortie Q passe dans l'état "0". Par contre dans la configuration S = 1 et R = 1, c'est-à-dire entre t1 et t2 et pendant les rebonds, les sorties restent inchangées : les rebonds ne sont pas visibles sur la sortie Q. Le fonctionnement est symétrique lors du passage de la position 2 à 1. IV.3 Bascule R.S.T ou R.S.Clock La bascule R.S.T. est une bascule pour laquelle les entrées S et R ne sont prises en compte qu'en coïncidence avec un signal de commande. Ce signal peut être fourni par une horloge, nous avons alors une bascule synchrone. Ce circuit peut être réalisé de la façon suivante et sa représentation est donnée sur la figure 8.

S

R

Clk

Q

Q

Figure 7 Lorsque le signal de commande, noté ici Clk, est à 1 la bascule fonctionne comme indiqué précédemment et les sorties suivent les variations des entrées S et R. Par contre, lorsque le signal de commande est à 0, la bascule est bloquée : Q est indépendant des éventuels changements de S et R. L'état mémorisé correspond au dernier état avant le passage de la ligne de commande de 1 à 0.

S

R

Q

QClk

Figure 8 Dans un système synchrone le signal de commande est fourni par une horloge (clock). Celui-ci est constitué par une succession périodique d'impulsions de largeur tp, supposée petite devant la période T. L'état de chacune des sorties restera donc bloqué pendant les intervalles séparant deux impulsions. Nous notons Qn la valeur de la sortie Q pendant le nième intervalle précédant la nième impulsion et Qn+1 la valeur correspondante dans l'intervalle suivant la nième impulsion (fig 9).

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 69

Page 70: Sylvain tisserant architecture et technologie des ordinateurs

0 T (n-1)T nT (n+1)T t

Qn Qn+1

Figure 9 Considérons l'instant t = nT + ε, où Clk = 1. Si S = R = 0, la sortie Q ne change pas donc Qn+1 = Qn. Si S = 1 et R = 0 alors la sortie Q est forcée à 1. Si R = 1 et S = 0 alors la sortie Q est mise à 0. Si S = R = 1 alors les deux sorties Q et Q sont toutes les deux à 1. Cet état est instable et ne persiste pas lorsque le signal de commande revient à 0. L'état final sera indéterminé, dépendant des vitesses relatives des portes. Cette situation ne doit pas être autorisée. L'état Q reste ensuite figé jusqu'à (n+1)T. Si nous notons Sn et Rn les valeurs de S et R juste avant l'instant t = nT nous pouvons écrire la table de vérité :

Sn Rn Qn+1 0 0 Qn 1 0 1 0 1 0 1 1 ?

Table 3

IV.4 Bascules J-K, D et T

IV.4.a Bascule J-K La bascule J-K permet de lever l'ambiguïté qui existe dans la table 3. Ceci peut être obtenu en asservissant les entrées R et S aux sorties Q et Q selon le schéma logique indiqué sur la figure 10.

S

R

Q

QClk

JQKQ

Figure 10 Nous avons alors pour les signaux R et S :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 70

Page 71: Sylvain tisserant architecture et technologie des ordinateurs

=

=

QKR

QJS

Ce qui nous permet de construire la table de vérité de la bascule J-K.

Jn Kn Qn nQ S R Qn+1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0

Table 4

Nous constatons que nous ne rencontrons jamais la combinaison R = S = 1. Cette table peut se résumer sous la forme suivante :

Jn Kn Qn+1 0 0 Qn 0 1 0 1 0 1 1 1 nQ

Table 5

La figure 11 explicite le diagramme logique d'une bascule J-K. Le rôle des entrées Pr et Cr sera étudié dans le prochain paragraphe.

Q

Q

J

K

Clk

Pr

Cr

Figure 11

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 71

Page 72: Sylvain tisserant architecture et technologie des ordinateurs

A partir de la table 5 nous pouvons construire la table de transition de la bascule J-K. La table 6 donne les états dans lesquels doivent se trouver les entrées J et K pour obtenir chacune des quatre transitions possibles de la sortie Q. Une croix indique que l'état de l'entrée considérée est indifférent : 0 ou 1. Par exemple, pour obtenir la transition 0 → 1 de la sortie Q il faut que l'entrée J soit dans l'état 1, quelque soit l'état de l'entrée K. En effet, nous pouvons avoir J = K = 1 qui inverse l'état de la bascule ou J = 1 et K = 0 qui charge 1 dans la bascule.

Qn Qn+1 Jn Kn 0 0 0 X 0 1 1 X 1 0 X 1 1 1 X 0

Table 6

Comme les deux entrées ne sont jamais spécifiées simultanément il est possible de choisir pour simplifier l'égalité des deux entrées :

J = K On utilise parfois l'expression logique donnant Qn+1 en fonction de Jn, Kn et Qn. Pour cela nous pouvons par exemple construire le tableau de Karnaugh à partir de la table de vérité (table 4) de la bascule J-K :

00 01 11 10

0

1

JKQ

11

11

D'où nous tirons l'équation caractéristique qui exprime l'état futur en fonction de l'état présent et des entrées :

nnnn1n QKQJQ +=+

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 72

Page 73: Sylvain tisserant architecture et technologie des ordinateurs

IV.4.b Preset et Clear Les entrées asynchrones (car à utiliser en absence de signal d'horloge, lorsque Clk = 0) Pr (Preset) et Cr (Clear) permettent d'assigner l'état initial de la bascule, par exemple juste après la mise sous tension pour éviter tout aléa. En fonctionnement normal ces deux entrées doivent être maintenues à 1. Lorsque le signal d'horloge est à 0 nous avons la table de vérité suivante :

Pr Cr Q 1 1 Q 0 1 1 1 0 0

Table 7

La figure 12 donne la représentation symbolique d'une bascule J-K avec les entrées Preset et Clear.

J

K

Q

QClk

Cr

Pr

Figure 12

IV.4.c Bascule J-K Maître-Esclave Jusqu'à présent nous avons construit les tables de vérité à partir de la logique combinatoire qui suppose que les entrées sont indépendantes des sorties. Or dans la bascule J-K nous avons introduit des connexions d'asservissement entre les entrées et les sorties. Ainsi supposons qu'avant le signal d'horloge nous avons J = K = 1 et Q = 0 (notations de la figure 11). Lorsque le signal d'horloge passe à 1 la sortie Q devient 1. Ce changement intervient après un intervalle de temps ∆t. Nous avons alors J = K = Q = 1. D'après la table 4 nous voyons que la sortie Q doit alors revenir à 0. Ainsi la sortie Q va osciller entre 0 et 1 pendant toute la durée du signal d'horloge rendant le résultat ambigu. Pour éviter ce problème on monte deux bascules R-S en cascade (fig. 13) en asservissant les entrées de la première (Maître) aux sorties de la seconde (Esclave). D'autre part, le signal d'horloge parvenant à l'esclave est inversé.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 73

Page 74: Sylvain tisserant architecture et technologie des ordinateurs

Supposons Pr = Cr = 1. Pendant la nième impulsion le signal d'horloge est haut pour le maître et bas pour l'esclave. L'état Qn est donc invariant pendant la durée tp de l'impulsion. Le problème précédent est donc résolu et l'état de la sortie de la bascule maître QM est donné par la table 5. Ensuite lorsque le signal d'horloge passe à 0 pour le maître celui-ci est bloqué alors que l'esclave est libéré. Nous avons alors :

==⇒==⇒==

==⇒==⇒==

++

++

)1Q,0Q()1R,0S()1Q,0Q(

)0Q,1Q()0R,1S()0Q,1Q(

1n1nMM

1n1nMM

L'état de la bascule maître est transféré à la bascule esclave lors de la transition 1 → 0 (front descendant) du signal d'horloge. Les changements d’état éventuels des sorties Q et Q interviennent donc sur le front descendant du signal de commande Clk. Les entrées J et K qui définissent le nouvel état de ces sorties sont prises en compte lorsque le signal Clk est à 1.

J

ClkK

QM

QM

Q

Q

S

R

Pr

Cr Figure 13

signal d'horloge Clk

entrées synchrones J et K

temps demaintien

temps destabilisation

Figure 14

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 74

Page 75: Sylvain tisserant architecture et technologie des ordinateurs

Les entrées J et J doivent rester stables lorsque le signal Clk est haut. Dans la pratique elles doivent être stabilisées avant le front montant (temps de stabilisation) et le rester un peu après le front descendant (temps de maintien). IV.4.d Déclenchement sur front montant ou descendant du signal d’horloge Le problème de l’oscillation de la bascule J-K lorsque le signal Clk est haut, réglé par les deux étages de la bascule maître-esclave, peut également être éliminé par l’utilisation d’un détecteur de front. Un tel circuit produit en coïncidence avec le front montant ou le front descendant du signal Clk une impulsion de largeur juste suffisante pour permettre un basculement d’état. Les figures suivantes illustrent le principe d’un détecteur de front montant (fig. 15) et d’un détecteur de front descendant (fig. 16). Une fois n’est pas coutume dans ce cours, nous tenons compte d’un retard induit par l’inverseur.

Clk Y

Clk

Clk

Y

Figure 15

Clk Y

Clk

Clk

Y

Figure 16

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 75

Page 76: Sylvain tisserant architecture et technologie des ordinateurs

Il suffit d’insérer un détecteur de front avant les deux premières portes NON-ET (figure suivante) pour obtenir une bascule J-K déclenchée par le front montant ou le front descendant du signal d’horloge.

Détecteurde front

J

Clk

K

Cr

Pr

Q

Q

Figure 17

La figure 18 présente les symboles d’une bascule déclenchée par le front montant et d’une bascule déclenchée par le front descendant du signal de commande.

J

K

Q

QClk

Cr

PrJ

K

Q

QClk

Cr

Pr

bascule déclenchéepar front montant

bascule déclenchéepar front descendant

Figure 18

IV.4.e Bascule D Une bascule D (Delay) est obtenue à partir d'une bascule J-K en envoyant simultanément une donnée sur l'entrée J et son inverse sur l'entrée K (fig. 19). A partir de la table 5 nous pouvons écrire :

=⇒==⇒=

=⇒==⇒=

+

+

0Q)1K,0J(0D

1Q)0K,1J(1D

1nnnn

1nnnn

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 76

Page 77: Sylvain tisserant architecture et technologie des ordinateurs

Ce qui peut se résumer par Qn+1 = Dn. Ainsi l'état de la bascule Q pendant l'intervalle n+1 est égal à la valeur de l'entrée D pendant l'intervalle n. Une bascule D agit comme une unité à retard pour laquelle la sortie suit l'entrée avec un cycle de retard. Sa représentation symbolique est donnée par la figure 20.

J

K

Q

QClk

Cr

PrDH

Figure 19

D Q

QClk

Cr

Pr

Figure 20

IV.4.f Bascule D à commande sur front montant

1

2

3

4

5

6 Q

QH

D

Clear

Preset

Figure 21

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 77

Page 78: Sylvain tisserant architecture et technologie des ordinateurs

Nous nous intéressons ici à une seconde technique pour réaliser une bascule D pour laquelle la valeur de l'entrée D présente au moment de la transition 0 → 1 du signal d'horloge est chargée dans la bascule. Ensuite, que H soit égal à 1 ou à 0, la bascule est isolée de l'extérieur jusqu'au prochain front montant du signal H. L'entrée doit être stabilisée un peu avant la transition de H et conserver cette valeur un certain temps après. Considérons le circuit schématisé sur la figure 21. Notons S1, S2, S3 et S4 les sorties des portes NAND numérotées respectivement 1, 2, 3 et 4. En fonctionnement normal nous devons avoir Clear = 1 pour ne pas bloquer les portes 1, 3 et 5 et Preset = 1 pour ne pas bloquer les portes 4 et 6. Pour H = 0 nous avons S2 = S3 = 1. Considérons maintenant le passage de H à 1. 1er cas : D = 1 Porte 1 : D = S2 = Clear = 1 ⇒ S1 = 0 Porte 2 : S1 = 0 ⇒ S2 = 1 Porte 4 : S1 = 0 ⇒ S4 = 1 Porte 3 : H = S4 = Clear = 1 ⇒ S3 = 0 Porte 6 : S3 = 0 ⇒ Q = 1 Porte 5 : Q = S2 = Clear = 1 ⇒ 0Q = 2ème cas : D = 0 Porte 1 : D = 0 ⇒ S1 = 1 Porte 2 : H = S1 = S3 = 1 ⇒ S2 = 0 Porte 4 : S1 = S3 = Preset = 1 ⇒ S4 = 0 Porte 3 : S4 = 0 ⇒ S3 = 1 Porte 5 : S2 = 0 ⇒ 1Q = Porte 6 : 1QesetPrS3 === ⇒ Q = 0 Dans les deux cas nous vérifions que Q = D. Maintenant considérons une transition de D alors que le signal H est encore à 1. 1er cas : D = 1 → 0 (juste avant cette transition nous avons : S1 = S3 = 0, S2 = S4 = 1) Porte 1 : D = 0 ⇒ S1 = 1 Porte 2 : S3 = 0 ⇒ S2 = 1 Porte 4 : S3 = 0 ⇒ S4 = 1 Porte 3 : H = S4 = Clear = 1 ⇒ S3 = 0

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 78

Page 79: Sylvain tisserant architecture et technologie des ordinateurs

Porte 6 : S3 = 0 ⇒ Q = 1 Porte 5 : Q = S2 = Clear = 1 ⇒ 0Q = 2ème cas : D = 0 → 1 (juste avant cette transition nous avons : S1 = S3 = 1, S2 = S4 = 0) Porte 1 : S2 = 0 ⇒ S1 = 1 Porte 2 : H = S1 = S3 = 1 ⇒ S2 = 0 Porte 4 : S1 = S3 = Preset = 1 ⇒ S4 = 0 Porte 3 : S4 = 0 ⇒ S3 = 1 Porte 5 : S2 = 0 ⇒ 1Q = Porte 6 : 1QesetPrS3 === ⇒ Q = 0 Dans les deux cas la sortie Q reste inchangée. Etudions maintenant les opérations de Remise à Zéro et Remise à Un : Preset = 0 et Clear = 1 : Preset = 0 ⇒ S4 = Q = 1 si H = 0 alors S2 = 1 si H = 1 alors H = S4 = Clear = 1 ⇒ S3 = 0 ⇒ S2 = 1 Dans les deux cas : 0Q1ClearSQ 2 =⇒=== Preset = 1 et Clear = 0 : Clear = 0 ⇒ 1QSS 31 ===

1esetPrQS3 === ⇒ Q = 0

IV.4.g Bascule T Dans la table 5 nous constatons que si J = K = 1 alors n1n QQ =+ . L'état de la sortie est inversé à chaque cycle d'horloge. Une bascule T (Trigger) est obtenue à partir d'une bascule J-K en injectant le même état dans les entrées J et K (fig. 22). Sa table de vérité est donnée dans la table 7 et sa représentation par la figure 23.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 79

Page 80: Sylvain tisserant architecture et technologie des ordinateurs

J

K

Q

QClk

Cr

PrTH

Figure 22

Tn Qn+1

1 nQ 0 Qn

Table 7

T Q

QClk

Cr

Pr

Figure 23 IV.5 Registre de mémorisation Un registre permet la mémorisation de n bits. Il est donc constitué de n bascules, mémorisant chacune un bit. L'information est emmagasinée sur un signal de commande et ensuite conservée et disponible en lecture. La figure 24 donne un exemple de registre 4 bits réalisé avec quatre bascules D. En synchronisme avec le signal d'écriture W le registre mémorise les données présentent sur les entrées E0, E1, E2 et E3. Elles sont conservées jusqu'au prochain signal de commande W. Dans cet exemple les états mémorisés peuvent être lus sur les sorties Q0, Q1, Q2 et Q3 en coïncidence avec un signal de validation R. Lorsque ces sorties sont connectées à un bus, les portes ET en coïncidence avec ce signal de lecture sont remplacées par des portes à trois états.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 80

Page 81: Sylvain tisserant architecture et technologie des ordinateurs

Q

Q

D

Clk

E0

Q0

Q

Q

D

Clk

E1

Q1

Q

Q

D

Clk

E2

Q2

Q

Q

D

Clk

E3

Q3

WR

Figure 24 IV.6 Registre à décalage Dans un registre à décalage les bascules sont interconnectées de façon à ce que l'état logique de la bascule de rang i puisse être transmis à la bascule de rang i+1 (ou i-1) quand un signal d'horloge est appliqué à l'ensemble des bascules. L'information peut être chargée de deux manières dans ce type de registre. - Entrée parallèle : comme dans le cas d'un registre de mémorisation. En général une porte

d'inhibition est nécessaire pour éviter tout risque de décalage pendant le chargement parallèle. - Entrée série : l'information est présentée séquentiellement bit après bit à l'entrée de la première

bascule. A chaque signal d'horloge un nouveau bit est introduit pendant que ceux déjà mémorisés sont décalés d'un niveau dans le registre. La figure 25 schématise le chargement d'un registre 4 bits en quatre coups d'horloge.

a3 a4

a4

a2 a3 a4

a2

a3

a4

a1

a1 a2 a3 a4

top n° 1

top n° 2

top n° 3

top n° 4

Figure 25

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 81

Page 82: Sylvain tisserant architecture et technologie des ordinateurs

De même l'information peut être lue en série ou en parallèle. D'autre part, certains registres peuvent être capables de décaler à gauche et à droite. Un registre à décalage universel serait donc constitué des entrées, des sorties et des commandes suivantes :

Registre à décalage

Horloge

Sortie sériedécalage à droite

Sortie sériedécalage à gauche

Sortiesparallèles

Entréesparallèles

Validationentrées parallèles

Décalage à droiteou à gauche

Entréesérie

Validationentrée série

Figure 26 Généralement on utilise des bascules du type maître-esclave D ou R-S.

IV.6.a Entrée série - Sortie parallèle La figure suivante donne un exemple de registre de 4 bits à entrée série et sortie parallèle réalisé avec des bascules D.

QD

Clk

S0

QD

Clk

S1

QD

Clk

S2

QD

Clk

S3

E.S.

H

S.S.

Figure 27 Ce type de registre permet de transformer un codage temporel (succession des bits dans le temps) en un codage spatial (information stockée en mémoire statique).

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 82

Page 83: Sylvain tisserant architecture et technologie des ordinateurs

La sortie série peut également être utilisée. L'intérêt d'utilisation d'un registre à décalage en chargement et lecture série réside dans la possibilité d'avoir des fréquences d'horloge différentes au chargement et à la lecture. Le registre constitue alors un tampon.

IV.6.b Entrée parallèle - sortie série La figure 28 présente un exemple de registre à décalage à entrée parallèle ou série et sortie série. Si X = 1 l'entrée parallèle est inhibée et l'entrée série est validée. Si X = 0 l'entrée série est bloquée par contre le chargement par l'entrée parallèle est autorisé.

QD

Clk

E0

QD

Clk

E1

E.S.

HX

S.S.

Figure 28 Un registre à décalage à entrée parallèle et sortie série transforme un codage spatial en codage temporel.

IV.6.c Entrée parallèle - Sortie parallèle La figure 29 présente un exemple de registre à décalage avec entrées série et parallèle et sorties série et parallèle réalisé avec des bascules de type D. La commande permet de sélectionner le mode de chargement et d'inhiber le signal d'horloge en cas de chargement parallèle. Si X = 0 nous avons Pr = Cr = 1, ce qui garantit le fonctionnement normal des bascules. Si X = 1 alors selon l'état de chacune des entrées nous avons :

iiii

iiEQ

0Q)0Cr,1(Pr0E

1Q)1Cr,0(Pr1E=⇒

=⇒==⇒=

=⇒==⇒=

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 83

Page 84: Sylvain tisserant architecture et technologie des ordinateurs

D QClK

Cr

Pr

Q0

E0

D QClK

Cr

Pr

Q1

E1

E.S.

H

X

Figure 29

IV.6.d Registre à décalage à droite et à gauche La figure 30 présente un exemple de registre à décalage universel de 4 bits. Les diverses possibilités sont sélectionnées par les lignes commande S0 et S1. Considérons la ligne transportant le signal d'horloge aux bascules, elle est gouvernée par l'expression logique :

)SS(HSSHClk 1010 +=+= •• Le signal d'horloge sera donc inhibé si S0 = S1 = 0. Pour sélectionner le chargement parallèle (entrées A, B, C et D) il faut :

1SSSS 1010 ==+ • C'est-à-dire S0 = S1 = 1. Le chargement se fera sur un signal d'horloge. Pour sélectionner le décalage à droite (entrée E1, sortie QD) il nous faut S0 = 1 et S1 = 0 et pour le décalage à gauche (entrée E0, sortie QA) S0 = 0 et S1 = 1. Ce qui est résumé dans le tableau 8.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 84

Page 85: Sylvain tisserant architecture et technologie des ordinateurs

SR

Q

Clk

Q

B

SR

Q

ClkC

r

QB

SR

Q

Clk

QC

SR

Q

ClkC

r

Q

C

SR

Q

Clk

Q

A

SR

Q

ClkC

r

QA

QD

SR

Q

ClkC

r

Q

D

S0

S1H

Clear

E0

E1

Figure 30

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 85

Page 86: Sylvain tisserant architecture et technologie des ordinateurs

S0 S1 Fonction 0 0 Registre bloqué 0 1 Décalage à gauche 1 0 Décalage à droite 1 1 Chargement parallèle

Table 8

Un registre à décalage à droite et à gauche permet d'effectuer des multiplications et des divisions entières par des puissances de 2. En effet une multiplication par 2 est équivalente à un décalage vers la gauche et une division par 2 à un décalage vers la droite. Une multiplication par 2n sera obtenue par n décalages à gauche et une division par 2n par n décalages à droite. IV.7 Compteurs Un compteur est un ensemble de n bascules interconnectées par des portes logiques. Ils peuvent donc mémoriser des mots de n bits. Au rythme d'une horloge ils peuvent décrire une séquence déterminée c'est-à-dire occuper une suite d'états binaires. Il ne peut y avoir au maximum que 2n combinaisons. Ces états restent stables et accessibles entre les impulsions d'horloge. Le nombre total N des combinaisons successives est appelé le modulo du compteur. On a N ≤ 2n. Si N < 2n un certain nombre d'états ne sont jamais utilisés. Les compteurs binaires peuvent être classés en deux catégories : - les compteurs asynchrones; - les compteurs synchrones. De plus on distingue les compteurs réversibles ou compteurs-décompteurs. IV.8 Compteurs asynchrones Un compteur asynchrone est constitué de n bascules J-K fonctionnant en mode T. Le signal d'horloge n'est reçu que par le premier étage (bascule LSB : Least Significant Bit). Pour chacune des autres bascules le signal d'horloge est fourni par une sortie de la bascule de rang immédiatement inférieur. Considérons par exemple (fig. 31) un compteur modulo 8 suivant le code binaire pur constitué de trois bascules J-K maîtres-esclaves. Supposons les trois bascules à zéro à l'instant t = 0. Nous avons vu que pour une bascule maître-esclave la sortie change d'état juste après le passage du signal d'horloge de l'état 1 à l'état 0 (front descendant). L'évolution temporelle des trois sorties Q0, Q1 et Q2 par rapport aux impulsions d'horloge est représentée sur la figure 32. La sortie Q0 bascule sur chaque front descendant du signal d'horloge. La sortie Q1 change d'état à chaque transition 1 → 0 de la sortie Q0. De même le basculement de la sortie Q2 est déclenché par une transition 1 → 0 de la sortie Q1.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 86

Page 87: Sylvain tisserant architecture et technologie des ordinateurs

J

K

Q

QClk

J

K

Q

QClk

J

K

Q

QClk

Q 0 Q2Q 1

H

"1"

Figure 31

H

Q0

Q

Q

1

2

1 2 3 4 5 6 7 8

Figure 32 A partir de ce chronogramme nous pouvons écrire la liste des états successifs des trois sorties :

Impulsion Q2 Q1 Q0 état initial 0 0 0

1 0 0 1 2 0 1 0 3 0 1 1 4 1 0 0 5 1 0 1 6 1 1 0 7 1 1 1 8 0 0 0

Table 9

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 87

Page 88: Sylvain tisserant architecture et technologie des ordinateurs

Nous avons réalisé un compteur s'incrémentant d'une unité à chaque top d'horloge, avec un cycle de huit valeurs de 0 à 7 (modulo 8). Nous constatons que les sorties Q0, Q1 et Q2 fournissent des signaux périodiques de fréquences respectivement 2, 4 et 8 fois plus faibles. La division de fréquence est une des applications des compteurs.

IV.8.a Compteur-décompteur asynchrone Nous obtenons un compteur en déclenchant chaque bascule lorsque celle de rang immédiatement inférieur passe de l'état 1 à 0. Pour réaliser un décompteur il faut que le changement d'état d'une bascule intervienne lorsque la bascule de rang immédiatement inférieur passe de l'état 0 à 1. Pour cela il suffit d'utiliser la sortie Q de chaque bascule pour déclencher la suivante. On réalise un compteur-décompteur en utilisant un multiplexeur 2 entrées - 1 sortie entre chaque étage pour sélectionner la sortie à utiliser. Pour l'exemple présenté sur la figure 33, selon l'état de la ligne de commande X nous pouvons sélectionner le mode de comptage :

X = 1 ⇒ compteur; X = 0 ⇒ décompteur.

J

Clk

K

Q

Q

Etage i

Qi

J

Clk

K

Q

Q

Etage i+1

Qi+1

"1"X

Figure 33

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 88

Page 89: Sylvain tisserant architecture et technologie des ordinateurs

IV.8.b Remise à Zéro et chargement d'un compteur La figure 34 présente un exemple de montage permettant de remettre à zéro un compteur ou de le charger avec une valeur déterminée. Pour cela on utilise les entrées asynchrones des bascules. En fonctionnement normal du compteur nous devons avoir : DS = R = 1. Nous avons alors : J = K = Pr = Cr = 1 sur chaque bascule du compteur. Pour RAZ : R = 0 ⇒ J = K = 0 Interdit tout basculement sur une impulsion du signal Clk; ⇒ (Pr = 1, Cr = 0) ⇒ Q = 0. Chargement : (DS = 0, R = 1) ⇒ J = K = 0 Interdit tout basculement sur une impulsion du signal Clk; D = 0 ⇒ (Pr = 1, Cr = 0) ⇒ Q = 0 D = 1 ⇒ (Pr = 0, Cr = 1) ⇒ Q = 1 Dans ces deux cas nous obtenons Q = D. Nous sommes donc capable de charger chaque bit du compteur avec une valeur donnée à présenter sur l'entrée D, donc d'initialiser le compteur.

J

K

Q

QClK

Cr

Pr

D.S.

R

D Figure 34

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 89

Page 90: Sylvain tisserant architecture et technologie des ordinateurs

IV.8.c Compteur à cycle incomplet On peut souhaiter compter jusqu'à un nombre N qui ne soit pas une puissance de 2, par exemple 10 (système décimal). Pour cela on utilise un compteur de n bascules, tel que 2n > N. On lui ajoute un asservissement de l'entrée Clear pour remettre le compteur à zéro tous les N coups. Considérons par exemple un compteur modulo 10. Nous voulons que l'entrée Clear soit à 0 lorsque le compteur atteint 1010 = 10102. Pour cela nous pouvons écrire l'expression logique :

0123 QQQQCr •••= En fait dans ce cas particulier nous pouvons simplifier cette relation logique en ne tenant compte de ce que des sorties à 1 dans l'expression binaire de N. En effet il ne peut y avoir ambiguïté : toute combinaison contenant les mêmes sorties à 1 et au moins une autre à 1 correspond à un nombre plus grand que N et ne peut être rencontrée dans la séquence décrite par le compteur. Pour un compteur modulo 10 nous pouvons donc utiliser :

13 QQCr •= ce qui nous conduit au schéma suivant :

J

K

Clk

Q

Cr

Q 1

J

K

Clk

Q

Cr

Q 2

J

K

Clk

Q

Cr

Q 3

J

K

Clk

Q

Cr

Q0

H

"1"

Figure 35

IV.8.d Inconvénients des compteurs asynchrones Comme chaque bascule a un temps de réponse le signal d'horloge ne parvient pas simultanément sur toutes les bascules. Ceci a pour conséquence de provoquer des états transitoires qui peuvent être indésirables. Supposons un temps de réponse tr identique pour toutes les bascules. Considérons la chronologie du passage d'un compteur asynchrone 4 bits de 0111 à 1000. Celle-ci est présentée sur la figure 36. Nous constatons que le compteur passe par les états

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 90

Page 91: Sylvain tisserant architecture et technologie des ordinateurs

transitoires 0110, 0100 et 0000 qui sont faux. Ceci est un inconvénient rédhibitoire chaque fois que la sortie du compteur est exploitée par des organes rapides.

0111 0111 0110 0100 0000 1000 t

H

Q0

1

2

3

Q

Q

Q

Figure 36 IV.9 Compteurs synchrones Dans un compteur synchrone toutes les bascules reçoivent en parallèle le même signal d'horloge. Pour faire décrire au compteur une séquence déterminée il faut à chaque impulsion d'horloge définir les entrées synchrones J et K. Pour cela on utilise la table de transition de la bascule J-K (table 6). Nous avons déjà remarqué que cette table peut se simplifier. En effet, pour chacune des quatre transitions possibles une seule des entrées J ou K est définie. Rien ne nous interdit donc de les mettre dans le même état, c'est-à-dire J = K, comme dans une bascule T. Prenons l'exemple d'un compteur synchrone 3 bits fonctionnant selon le code binaire pur. Nous pouvons dresser un tableau précisant les valeurs des entrées J et K permettant d'obtenir chaque transition (passage d'une ligne à la suivante). Pour qu'une bascule change d'état il faut que ses deux entrées soient à 1.

# top Q2 Q1 Q0 J2 = K2 J1 = K1 J0 = K0

0 0 0 0 0 0 1 1 0 0 1 0 1 1 2 0 1 0 0 0 1 3 0 1 1 1 1 1 4 1 0 0 0 0 1 5 1 0 1 0 1 1 6 1 1 0 0 0 1 7 1 1 1 1 1 1 8 0 0 0

Table 10

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 91

Page 92: Sylvain tisserant architecture et technologie des ordinateurs

Chaque ligne de cette table correspond à une même tranche de temps. Il est assez facile d'en déduire les expressions logiques reliant les entrées aux sorties :

==

==

==

• 1022

011

00

QQKJ

QKJ

1KJ

De manière générale nous pouvons vérifier que les équations de commutation satisfont les relations de récurrence suivantes :

==

==

−••• 1i10ii

00

Q...QQKJ

1KJ

ou encore :

==

==

−•− 1iQ1iii

00

JKJ

1KJ

Procédons de même pour réaliser un décompteur, nous écrivons la table des transitions recherchées :

# top Q2 Q1 Q0 J2 = K2 J1 = K1 J0 = K0

0 1 1 1 0 0 1 1 1 1 0 0 1 1 2 1 0 1 0 0 1 3 1 0 0 1 1 1 4 0 1 1 0 0 1 5 0 1 0 0 1 1 6 0 0 1 0 0 1 7 0 0 0 1 1 1 8 1 1 1

Table 11

Nous en déduisons l'expression logique des entrées d'un décompteur :

•==

==

==

1022

011

00

QQKJ

QKJ

1KJ

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 92

Page 93: Sylvain tisserant architecture et technologie des ordinateurs

Nous constatons que les équations de commutation sont identiques en utilisant cette fois les sorties complémentaires Q . Aux deux manières d'exprimer les relations de récurrence des équations de commutation correspondent deux types de circuits. Le premier (fig. 37) est dit à report parallèle, le second (fig. 38) à report série. Dans le report série on utilise la fonction Ji-1. On évite ainsi des portes à multiples entrées. Par contre, il faut tenir compte du retard dans l'établissement de Ji-1. Il faut donc que la largeur des impulsions d'horloge soit assez grande et la vitesse maximum de fonctionnement sera plus faible que pour le report parallèle. Les deux schémas présentés sur les figures 37 et 38 correspondent à des compteurs-décompteurs (X = 0 ⇒ compteur, X = 1 ⇒ décompteur).

J

K

Q

QClk

J

K

Q

QClk

J

K

Q

QClk

J

K

Q

QClk"1"

X

H

Figure 37

J

K

Q

QClk

J

K

Q

QClk

J

K

Q

QClk

J

K

Q

QClk"1"

X

H

Figure 38

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 93

Page 94: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 94

Page 95: Sylvain tisserant architecture et technologie des ordinateurs

Mémoires vives Dans les trois chapitres précédents nous avons étudié la plupart des briques de base utilisées pour la conception d'ordinateurs. Nous allons maintenant monter d'un niveau et aborder les principes de réalisation des principaux blocs fonctionnels à partir de ces briques. Nous commençons (c'est un choix arbitraire) par la mémoire vive. La première partie de ce chapitre sera consacrée à son organisation matérielle. Dans la seconde nous ébaucherons son organisation logique, dont l'étude doit être approfondie dans le cours sur les systèmes d'exploitation. V.1 Introduction Nous savons que dans un ordinateur toutes les informations : valeur numérique, instruction, adresse, symbole (chiffre, lettre,…) etc… sont manipulées sous une forme binaire. Ces informations doivent en général être conservées pendant un certain temps pour permettre leur exploitation. Ce rôle est dévolu aux mémoires chargées de conserver programmes, données provenant de l'extérieur, résultats intermédiaires, données à transférer à l'extérieur, etc. Nous avons déjà rencontré les registres de mémorisation, mais ceux-ci ne sont pas adaptés aux grandes capacités de stockage. Il faut pour cela des mémoires à lecture et écriture ou mémoires vives, qui permettent d'enregistrer une information, de la conserver et de la restituer. Ces mémoires sont, d'autre part, à accès aléatoire (RAM : Random Acces Memory) c'est-à-dire que le temps d'accès à l'information est indépendant de sa place en mémoire. Cette appellation, d'origine historique, est toujours synonyme de mémoire vive. Bien que très répandue cette appellation n'est plus suffisante car tous les circuits à semi-conducteur sont aujourd'hui à accès aléatoire. L'accès séquentiel ne porte plus que sur les mémoires magnétiques (disques ou bandes). Par contre, une mémoire vive est volatile : la conservation de son contenu nécessite la permanence de son alimentation électrique. L'information élémentaire, ou bit (binary digit), est mémorisée dans une cellule ou point mémoire. Nous étudierons plus loin les deux principales technologies utilisées pour réaliser une cellule. Ces cellules sont groupées en mots de n bits, c'est-à-dire que les n bits sont traités (écrits ou lus) simultanément. On ne peut pas modifier un seul bit, pour cela il faut transférer le mot dans un registre, modifier le bit puis réécrire le mot en mémoire. Par ailleurs, les cellules sont arrangées en bloc mémoire. Extérieurement, et en ne tenant compte que des signaux logiques, un bloc mémoire peut être représenté comme sur la figure 1. Pour pouvoir identifier individuellement chaque mot on utilise k lignes d'adresse. La taille d'un bloc mémoire est donc 2k, le premier mot se situant à l'adresse 0 et le dernier à l'adresse 2k - 1. Une ligne de commande (R/W) indique si la mémoire est accédée en écriture (l'information doit être mémorisée) ou en lecture (l'information doit être

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 95

Page 96: Sylvain tisserant architecture et technologie des ordinateurs

restituée). Sur ce schéma on distingue deux canaux de n lignes en entrée et en sortie, mais dans d'autres cas les accès en entrée et en sortie peuvent être confondus en un seul canal bidirectionnel. Nous verrons l'intérêt de la ligne de validation ou de sélection du bloc (CS) un peu plus loin.

n lignesd'entrée

n lignesde sortie

k lignesd'adresse

2 mots de n bitsk

R/W

CS

Figure 1 V.2 Adressage bidimensionnel ou matriciel L'organisation des cellules à l'intérieur d'un bloc la plus simple à imaginer correspond au schéma suivant, chaque ligne correspond à un mot de n bits :

2 lignesk

n sorties

k adresses

Décodeur

Figure 2

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 96

Page 97: Sylvain tisserant architecture et technologie des ordinateurs

Pour simplifier la figure, chaque cellule y est matérialisée avec uniquement une ligne de sélection et une ligne de sortie. Si la ligne de sélection est à "0", la cellule est "isolée" de la sortie. Si la ligne de sélection est à "1", l'information mémorisée se retrouve sur la ligne de sortie.

La figure correspond au mécanisme de lecture, mais le principe est également valable en écriture. En fonction de l'adresse, le décodeur active une et une seule des 2k lignes. Ainsi seules les cellules correspondant à l'adresse demandée sont sélectionnées et l'information mémorisée est alors disponible en sortie. Cette architecture très simple n'est pas la plus économique en terme de nombre de portes.

Considérons par exemple une mémoire contenant 512 mots de 4 bits soient 2048 bits. C'est-à-dire k = 9 et n = 4. Il faut 512 portes ET pour réaliser le décodeur. Une économie importante peut être obtenue en organisant la mémoire en une matrice de 64 lignes et 32 colonnes (2048 = 64 x 32). Chacune de ces 64 lignes peut être sélectionnée en utilisant 6 bits d'adresse. Comme nous ne voulons que des mots de 4 bits, il faut encore utiliser 4 multiplexeurs chacun sélectionnant une ligne sur 8. Les 3 derniers bits d'adresse sont affectés à ces multiplexeurs. Cette architecture est dénommée adressage X-Y ou bidimensionnel. Dans ce cas 64 portes ET sont nécessaires pour le décodeur et 9 portes (8 ET et 1 OU) pour chacun des multiplexeurs, soit au total 64 + (9 x 4) = 100 portes. Cela représente cinq fois moins de portes.

W0

W63

32 colonnes

64 lignes

Y3 Y2 Y1 Y0

A à A6 8

A à A0 5

Figure 3 L'organisation matricielle des blocs mémoires permet également d'éviter des pistes trop longues pour la distribution des différents signaux aux cellules. Les constantes de temps et les pertes de charge sont ainsi réduites.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 97

Page 98: Sylvain tisserant architecture et technologie des ordinateurs

Nous n'avons considéré que deux cas de figure pour l'organisation matricielle du bloc mémoire : 512 lignes de 4 colonnes et 64 lignes de 32 colonnes. D'autres variantes sont évidemment possibles, pour certaines le nombre de portes nécessaires est résumé dans le tableau suivant. Nous constatons que le minimum se situe pour une organisation "carrée", pour laquelle les nombres de lignes et de colonnes sont égaux ou diffèrent d'un facteur 2.

nb lignes nb colonnes Décodeur Multiplexeur Total 512 4 512 0 512 256 8 256 3 268 128 16 128 5 148 64 32 64 9 100 32 64 32 17 100 16 128 16 33 148 8 256 8 65 268

Table 1

Très souvent, les blocs mémoires comportent autant de lignes que de colonnes. Les mêmes lignes d'adresse peuvent alors être utilisées pour identifier successivement la ligne puis la colonne. Cela permet de réduire le nombre de broches de connexion, donc l'encombrement et le coût des circuits. Cependant cela demande à peu près deux fois plus de temps par transmettre l'adresse complète. Par contre, si on cherche à accéder à des informations stockées dans une même ligne il peut être possible de définir une fois la ligne, puis pour chaque mot de n'avoir à envoyer que l'adresse de la colonne. Il faut alors au moins un signal de commande supplémentaire pour indiquer que l'adresse correspond à une ligne ou une colonne. Il suffit de n+1 cycles d’adressage pour accéder à n colonnes d’une même ligne.

Parmi les caractéristiques d'une mémoire nous trouvons la capacité et le format. La capacité représente le nombre total de bits et le format correspond à la longueur des mots. Le nombre de bits d'adresse k définit le nombre total de mots de la mémoire, si n est le nombre de bits par mot, la capacité de la mémoire est donnée par :

Capacité = 2k mots = 2k x n bits

Cette capacité est exprimée en multiple de 1024 ou kilo. La table suivante résume la valeur des autres préfixes utilisés pour exprimer les capacités des mémoires :

Symbole Préfixe Capacité 1 k (kilo) 210 = 1024 1 M (méga) 220 = 1048576 1 G (giga) 230 = 1073741824 1 T (tera) 240 = 1099511627776

Table 2

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 98

Page 99: Sylvain tisserant architecture et technologie des ordinateurs

La figure 4, présente une autre organisation logique possible pour une mémoire de 128 mots de 8 bits. Ici chaque mot est stocké dans une case de 8 bits, tel un registre. Cette case reçoit en entrée 8 lignes de données et une ligne de chargement. Elle dispose de 8 lignes de sortie fournissant le contenu du registre. Chacune de ces lignes est commandée par une porte "3 états". Ces cases sont organisées en une matrice de 32 lignes et 4 colonnes. Les 7 bits d'adresse sont séparés en deux groupes, 5 bits pour identifier la ligne et 2 bits pour la colonne.

8 bits

R/W

CS

8 bits 8 bits 8 bits

8 bits 8 bits 8 bits 8 bits

8 bits 8 bits 8 bits 8 bits

8 bits 8 bits 8 bits 8 bits

Décodeur

de

ligne

Décodeur de colonne

S8

2AC

AL

E

5

8

Figure 4

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 99

Page 100: Sylvain tisserant architecture et technologie des ordinateurs

Le signal de sélection du boîtier (CS) valide les fonctions d'écriture et de lecture. Le boîtier est bloqué pour CS = 1. Lorsque CS = 0, une fonction d'écriture correspond à R/W = 0 et une fonction de lecture à R/W = 1. En écriture, le mot à charger doit être présent sur l'entrée E du circuit. Ces données sont distribuées simultanément sur toutes les cases de 8 bits. La ligne désignée par l'adresse AL est à 1. Le signal de chargement est transmis à la seule colonne identifiée par l'adresse AC. Seul le registre à l'intersection de cette ligne et de cette colonne est donc chargé.

En lecture, les quatre cases de la ligne sélectionnée fournissent leur contenu sur les quatre bus verticaux. Une seule des quatre portes "3 états", au bas du schéma, est connectée à la sortie S du boîtier. Cette porte "3 états" fournit une amplification des signaux.

REGISTRE

0

234567

1

0

REGISTRE

0

234567

1

15

Démuxadresse

chargement entrées

Muxtous les bits 7

Muxtous les bits 0

sorties adresse

Figure 5

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 100

Page 101: Sylvain tisserant architecture et technologie des ordinateurs

La figure 5 illustre une autre organisation de la lecture. Pour alléger le dessin, nous avons considéré une mémoire de 16 mots de 8 bits. Le principe du chargement est comparable au scénario précédent : les données sont distribuées sur tous les registres, mais un seul reçoit le signal de chargement. Par contre la sortie fait appel à 8 multiplexeurs. Chacun recevant les bits de poids identiques en provenance des 16 registres. L'adresse est distribuée sur tous ces multiplexeurs, et on trouve donc en sortie tous les bits du registre identifié. V.3 Assemblage de blocs mémoires Les techniques d'intégration ne permettent pas d'obtenir des boîtiers ayant des capacités ou des formats suffisants pour toutes les applications. Il est alors nécessaire d'associer plusieurs boîtiers pour augmenter la longueur des mots ou le nombre de mots. D’autre part, l'association de plusieurs blocs peut permettre d'améliorer les performances temporelles de la mémoire en faisant fonctionner plusieurs blocs en parallèle.

V.3.a Augmentation de la longueur des mots La figure suivante montre qu'il est aisé d'associer deux boîtiers de 2k mots de n bits pour obtenir un bloc de 2k mots de 2 n bits. L'adressage doit être appliqué simultanément aux deux circuits, l'un fournissant les n bits de bas poids et l'autre les n bits de haut poids.

k kk

n n

2 x n bitsk

2 x n bitskadresse

haut poids bas poids

Figure 6

V.3.b Augmentation du nombre de mots De même la figure suivante montre la réalisation d'un bloc de 4 x 2k mots de n bits à l'aide de 4 boîtiers de 2k x n bits. Il nous faut k+2 lignes d'adresse. Les k bits de bas poids de l'adresse sont appliqués simultanément sur les 4 boîtiers. Les deux bits de haut poids attaquent un

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 101

Page 102: Sylvain tisserant architecture et technologie des ordinateurs

décodeur à quatre sorties. Chacune de ces quatre lignes permet de sélectionner un boîtier (entrée de validation du boîtier : CS). Un seul boîtier est alors connecté aux lignes de sortie.

2 x n bitskk

n

2 x n bitskk

n

2 x n bitskk

n

2 x n bitskk

n

Décodeur

k

2

adresse : k bitsde bas poids

adresse : 2 bitsde haut poids

Figure 7

V.3.c Entrelacement Une mémoire entrelacée à n voies est constituée de n blocs. Le bloc numéroté i, avec i ∈ [0, n−1], contient toutes les cellules dont les adresses sont égales à i modulo n (add = k n + i). De cette manière deux mots à des adresses consécutives sont rangés dans deux blocs différents. Cette organisation permet de réduire le temps d'accès à la mémoire lors de la lecture ou de l'écriture par groupe de mots. Supposons par exemple qu'une unité centrale, de temps de cycle δt, veuille lire un ensemble de N mots à des adresses consécutives. Dans une mémoire non entrelacée cette opération demande un temps ∆t1 = N . δta, où δta est le temps d'accès à la mémoire, après réception de la première requête par l'unité de gestion de la mémoire (fig. 8).

90 1 2 3 4 5 6 7 8

Requêtes

Données

cycle

Mémoire non entrelacée

Figure 8

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 102

Page 103: Sylvain tisserant architecture et technologie des ordinateurs

Dans une mémoire entrelacée à n voies, telle que δta ≤ n δt, la première requête est transmise par l'unité de gestion de la mémoire au bloc i. La seconde requête, au cycle d'horloge suivant, est transmise au bloc i+1, et ainsi de suite. Chacune des n premières requêtes est ainsi transmise à un bloc différent. Ces blocs fonctionnent en parallèle. A l'instant δta mesuré après la première requête la première la donnée est disponible. Elle est collectée par l'unité centrale au nième cycle. La deuxième est disponible un cycle (δt) plus tard, et ainsi de suite (fig. 9). Les données suivantes pourront être récupérées à chaque cycle. Il faut donc un temps ∆t2 = (n − 1 + N) . δt pour lire les N mots. Il faut attendre n − 1 cycles sans recevoir aucune donnée.

90 1 2 3 4 5 6 7 8

Requêtes

Données

cycle

Mémoire entrelacée à 4 voies

Figure 9 Cette méthode, comparable au traitement en pipe-line des instructions que nous étudierons dans le chapitre consacré à l'unité centrale, est d'autant plus efficace que très souvent on doit accéder à des informations (instructions ou données dans des structures) à des adresses consécutives. Les groupes de mots lus sont ensuite stockés dans une mémoire cache (cf. plus loin). V.4 Réduction du nombre de broches Les fabricants de mémoires cherchent à réduire le nombre de broches des boîtiers, pour augmenter la densité d'implantation sur les circuits imprimés. Deux méthodes peuvent être utilisées pour réduire le brochage des signaux logiques. Comme nous l’avons déjà vu, il est possible de diviser par deux le nombre de broches pour l'adressage en chargeant successivement l'adresse de ligne puis l'adresse de colonne (fig. 10). La mémoire a alors une organisation "carrée", avec autant de lignes que de colonnes. Deux signaux (RAS : Row Address Strobe et CAS : Column Address Strobe) sont nécessaires pour identifier et charger ces deux adresses dans deux registres internes (RAR : Row Address Register et CAR : Column Address Register). Le contenu de ces registres est exploité respectivement par les décodeurs de ligne et de colonne. Pour accéder à plusieurs mots d'une même ligne, il n'est pas nécessaire de charger l'adresse de la ligne à chaque requête, il suffit de modifier l'adresse de colonne, on parle alors d'accès en mode page.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 103

Page 104: Sylvain tisserant architecture et technologie des ordinateurs

On peut également tirer profit de ce qu'on n'effectue jamais une lecture et une écriture simultanément. Il est donc possible d'utiliser les mêmes broches en lecture et en écriture. Pour cela on fait appel à des portes "3 états" (fig. 11). Ce dispositif est appelé transceiver.

adresse RAR

CAR

RAS

CAS

décodeurde ligne

décodeurde colonne

Figure 10

broche E/S

validation écriture

validation lecture

Figure 11 V.5. Les deux familles de mémoires vives Pour réaliser le point mémoire on dispose de deux techniques. On peut utiliser des bascules. Selon que sont utilisées des bascules du type D ou R-S, il faut une ou deux lignes pour amener le bit à charger. Avec une seule ligne il faut un inverseur par point mémoire. Les bascules garantissent la mémorisation de l'information aussi longtemps que l'alimentation électrique est maintenue sur la mémoire. Ces mémoires sont dites RAM statiques (SRAM). Dans les RAM dynamiques (DRAM) l'élément de mémorisation est constitué par un condensateur et un transistor à effet de champ (généralement réalisé en technique MOS). Ce transistor joue le rôle d'un interrupteur commandé. L'information est mémorisée sous la forme d'une charge électrique stockée dans le condensateur. Cette technique permet une plus grande densité d'intégration, car un point mémoire nécessite environ deux à quatre fois moins de place

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 104

Page 105: Sylvain tisserant architecture et technologie des ordinateurs

que dans une mémoire statique. Par contre, du fait des courants de fuite le condensateur a tendance à se décharger. C'est pourquoi les RAM dynamiques doivent être rafraîchies régulièrement pour entretenir la mémorisation : il s'agit de lire l'information avant qu'elle n'ait totalement disparu et de la recharger. Par ailleurs, la lecture étant destructive il est également nécessaire de restaurer la charge électrique à la fin de l'opération.

transistor

condensateur

ligne de données

sélection

Figure 12 Ce rafraîchissement indispensable a plusieurs conséquences. Tout d'abord il complique la gestion des mémoires dynamiques car il faut tenir compte des actions de rafraîchissement qui sont prioritaires. D'autre part, la durée de ces actions augmente le temps d'accès aux informations. Le temps d'attente des données est variable selon que la lecture est interrompue ou non par des opérations de rafraîchissement et la quantité de cellules à restaurer. Il faut donc se placer dans le cas le plus défavorable pour déterminer le temps d'accès à utiliser en pratique. En général les mémoires dynamiques, qui offrent une plus grande densité d'information et un coût par bit plus faible, sont utilisées pour la mémoire centrale, alors que les mémoires statiques, plus rapides, sont utilisées pour les caches et les registres. V.6 Cycles de fonctionnement des mémoires Deux paramètres caractérisent la vitesse d'une mémoire. Le temps d'accès (ta) représente le temps qui sépare une demande de lecture de l'obtention de l'information. Le temps de cycle (tc) correspond à l'intervalle de temps minimum qui sépare deux demandes successives en lecture ou écriture. La fréquence maximum de fonctionnement est égale à l'inverse du temps de cycle. Un autre paramètre est la bande passante qui caractérise le débit maximum en bits par seconde. En accès aléatoire cette bande passante est égale à :

ctnB =

où n est le nombre de bits transférés par cycle. Mais pour des données consécutives, certaines architectures (entrelacement, etc.) et certains modes de lecture (rafales, etc.) peuvent permettre d'approcher la limite :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 105

Page 106: Sylvain tisserant architecture et technologie des ordinateurs

amax t

nB =

V.6.a Consommation d'une mémoire Les constructeurs cherchent à limiter la consommation des boîtiers de mémoire qui peuvent être nombreux dans un système. Pour certaines mémoires on peut distinguer trois états avec chacun un niveau différent de consommation. L'état actif correspond au cas d'une opération de lecture ou d'écriture. La puissance dissipée dépend du débit. Dans l'état inactif ou passif, la mémoire alimentée normalement n'est pas sélectionnée. Les commandes de lecture et écriture envoyées sur un boîtier non sélectionné n'agissent pas. Les boîtiers qui consomment moins dans cet état sont dits "automatic power down". Dans l'état de veille, la mémoire est alimentée sous tension réduite avec des batteries. Elle ne peut être ni lue, ni écrite. Elle se contente de conserver son information : un circuit interne avec horloge et compteur permet un rafraîchissement automatique régulier de toutes les cellules sans intervention externe. Cet état permet de réduire la consommation.

V.6.b Cycle de lecture C'est le plus simple des cycles. La procédure, schématisée sur la figure 13, consiste à :

- Etablir l'adresse; - Afficher la fonction de lecture; - Sélectionner le ou les boîtiers nécessaires; - Après un certain délai, l'information apparaît sur la sortie qui passe en basse impédance.

L'information reste présente jusqu'à la fin du cycle. Le début de la requête est défini par l’établissement de l’adresse. C’est par rapport à cet instant que sont mesurés temps d’accès ta et temps de cycle tc. Il s'agit uniquement d'un chronogramme de principe. La polarité, la durée de stabilité de chaque signal, ainsi que les retards relatifs (ou phases) entre signaux sont précisés par le constructeur. Lorsque les adresses de ligne et de colonne sont multiplexées celles-ci doivent être stabilisées avant les signaux de chargement RAS et CAS respectivement. Le temps d'accès ta est mesuré à partir du début de l'opération, mais on distingue deux autres temps d'accès mesurés à partir des fronts descendants des signaux RAS et CAS. Dans l'exemple illustré, la ligne R/W à 1 indique une fonction de lecture.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 106

Page 107: Sylvain tisserant architecture et technologie des ordinateurs

HI HI

Adresse

Lecture

Sélection

Sortie

t c

t a

Figure 13

Adresse

R/W

RAS

t c

ligne colonne

t a

HIHI

CAS

Sortie

t a(CAS)t a(RAS)

Figure 14

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 107

Page 108: Sylvain tisserant architecture et technologie des ordinateurs

V.6.c Cycle d'écriture La procédure d'écriture consiste à :

- Etablir l'adresse; - Sélectionner le ou les boîtiers nécessaires; - Etablir la donnée sur l'entrée; - Etablir une impulsion d'écriture.

L'adresse doit être stabilisée avant la sélection et les données doivent être stabilisées avant le signal de chargement.

Adresse

R/W

Sélection

Données

Figure 15

V.6.d Cycle de lecture-modification-écriture Ce cycle permet de lire une donnée à une certaine adresse, de modifier la donnée et de l'inscrire à la même adresse. Le même résultat pourrait être obtenu avec deux cycles successifs de lecture et d'écriture, mais plus lentement car il faut alors présenter l'adresse deux fois. Il faut que les lignes d'entrée et de sortie soient distinctes. La procédure consiste à :

- Etablir l'adresse; - Sélectionner le boîtier correspondant; - Afficher la fonction lecture; - La donnée apparaît sur la sortie au bout du temps d'accès; - Le système modifie la donnée qu'il applique sur l'entrée; - Etablir une impulsion d'écriture.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 108

Page 109: Sylvain tisserant architecture et technologie des ordinateurs

V.6.e Lecture ou écriture en mode page Le mode page concerne les mémoires avec multiplexage des adresses ligne et colonne. Au cours de l'exécution d'un programme, l'accès aux informations (instructions ou données) se fait plus souvent à des adresses consécutives qu'à des adresses isolées. L'accès en mode page permet alors d'améliorer les temps d'accès. En effet lorsque l'adresse de la ligne (ou page) reste identique, il n'y a pas lieu de la présenter à nouveau. Dans un cycle en mode page, l'adresse de ligne est chargée une fois, chaque accès est ensuite défini par l'adresse de colonne. Le temps du premier accès est équivalent à celui d'un accès aléatoire. Il est appelé latence. Par contre les accès suivants sont plus rapides. La figure suivante illustre une séquence de trois accès comprenant une écriture intercalée entre deux lectures.

Adresse

R/W

RAS

CAS

Sortie

ligne col 1 col 2

Entrée

col 3

HIHIHI D 3D 1

D 2

Figure 16

V.6.f Rafraîchissement des mémoires dynamiques Pour la plupart des mémoires dynamiques les adresses sont multiplexées. A chaque accès, en lecture ou en écriture, chaque bit de la ligne désignée est transféré en bas de colonne dans une bascule. Ce transfert est initié par le front descendant du signal RAS. Les opérations effectives de lecture ou d'écriture se font au niveau de ces registres. Ceux-ci sont ensuite chargés dans la ligne d'origine sur le front montant du signal RAS. En procédant ainsi on rafraîchit la ligne adressée à chaque accès. Cela ne garantit pas un rafraîchissement suffisant de l'ensemble de la mémoire. Il est possible de déclencher le même mécanisme de rafraîchissement d'une ligne sans faire aucun accès. Il suffit de préciser l'adresse de la ligne à rafraîchir puis d'activer une impulsion d'une

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 109

Page 110: Sylvain tisserant architecture et technologie des ordinateurs

durée définie sur la ligne RAS. Par ailleurs les mémoires vives contiennent aussi un pointeur interne sur la prochaine ligne à rafraîchir. Il est utilisé en activant la ligne CAS avant la ligne RAS. Le mécanisme de rafraîchissement des divers blocs mémoires est confié à un contrôleur. C'est également ce contrôleur qui se charge de multiplexer les adresses. V.7 Mémoire synchrone

Tous les accès étudiés jusqu'à présent sont de type asynchrone. Ils peuvent intervenir à tout instant et leur durée est fixée par les composants de la mémoire. Ces dernières années le fossé entre la vitesse de fonctionnement des processeurs et la vitesse d'accès des mémoires n'a fait que croître. La mémoire constitue aujourd'hui le goulot d'étranglement des architectures. Les gains en performance sur la vitesse intrinsèque des composants sont relativement faibles. Les fabricants de mémoires jouent sur l'organisation logique des accès. Nous en avons déjà vu un exemple avec le mode page, dont de nombreuses variantes ont été mises en œuvre. Un autre mode permet de réduire le temps nécessaire à l'adressage des colonnes. Il s'agit du mode d'accès en rafale (burst) qui concerne plusieurs colonnes consécutives. Un compteur interne permet d'éviter le temps nécessaire à l'établissement des signaux d'adresse et à leur chargement. Il suffit donc de préciser initialement l'adresse de départ et le nombre de colonnes. Dans un composant asynchrone l'incrémentation de ce compteur est provoqué par des cycles du signal CAS. Mais il est également possible de faire appel à un signal d'horloge. Nous obtenons alors une mémoire synchrone (SDRAM pour Synchronous Dynamic Random Acces Memory). Cette solution a pour avantage de simplifier la gestion de la mémoire. Ce qui permet un léger gain de vitesse, mais aussi allège la conception du contrôleur. Il est ainsi possible d'avoir un accès à chaque cycle d'horloge. Par contre le temps d'accès pour une seule donnée n'est pas inférieur à celui d'une mémoire asynchrone. Il peut même être plus important.

Pour parvenir à suivre une fréquence intéressante les fabricants mettent également en œuvre des techniques déjà rencontrées dans ce chapitre. Par exemple, à l'intérieur d'un même circuit la mémoire est organisée en deux blocs (ou plus) qui peuvent être entrelacés. Cela permet également l'ouverture simultanée de deux pages. Il est alors possible de passer d'une page à une autre sans ralentir la vitesse d'accès. V.8 Gestion de la mémoire centrale Au début de l'informatique les mémoires étaient chères et de petites tailles. A cette époque les programmeurs passaient l'essentiel de leur temps à optimiser leur programme en fonction de la taille mémoire. On a ensuite pu utiliser une mémoire secondaire : bandes, tambours et disques. Le programmateur divisait alors son programme en un certain nombre de morceaux appelés

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 110

Page 111: Sylvain tisserant architecture et technologie des ordinateurs

branches (overlays), chaque branche étant de taille inférieure à celle de la mémoire. Pour exécuter un programme on chargeait la première branche puis la seconde et ainsi de suite. Le programmeur était totalement responsable de la découpe du programme et de la gestion de la migration des branches entre la mémoire principale et la mémoire secondaire. En 1961 des chercheurs de Manchester ont proposé une méthode qui permettait de rendre transparent au programmeur le mécanisme de gestion des branches. Au début des années 1970 cette technique, dite de mémoire virtuelle, devint disponible sur la plupart des ordinateurs. L'idée préconisée par le groupe de Manchester consiste à distinguer les notions d'espace d'adressage et d'emplacement mémoire. Ce paragraphe doit être développé dans un cours sur les systèmes d'exploitation. Je n'introduirai ici que les principales notions, pour étudier leur mise en œuvre au niveau du matériel.

V.8.a Unité d'adressage L'unité d'adressage est la plus petite quantité de mémoire qui sépare deux adresses consécutives. Dans toutes les machines, par convention, on assigne à la première position de mémoire l'adresse 0, à la deuxième l'adresse 1 et à la Nème l'adresse N-1. Une machine peut être adressable par octet (byte) ou par mot de 16, 20, 32, 60, 64, … bits. Dans une machine adressable par octet, un mot de 32 bits est constitué de 4 octets consécutifs. Mais les constructeurs ont adopté deux conventions différentes pour ranger les octets à l'intérieur d'un mot. Dans la première convention l'octet qui contient les 8 bits de poids faible du mot est rangé à l'adresse la plus basse. Il est rangé à l'adresse la plus haute dans le second cas. Ces deux conventions sont parfois référencées par les vocables de big-endian et little-endian respectivement. Aucune de ces deux conventions n'est intrinsèquement meilleure que l'autre. Cela n'a d'importance que lors d'un échange de données entre deux machines respectant des conventions différentes.

Octet 0 Octet 1 Octet 2 Octet 3

i + 3i i + 2i + 1 adresse

Convention 1

Octet 3 Octet 2 Octet 1 Octet 0

i + 3i i + 2i + 1 adresse

Convention 2

Figure 17 Il peut exister d'autres restrictions sur la façon dont une machine peut manipuler sa mémoire. Il peut par exemple être impossible de faire démarrer un mot de 32 bits à n'importe quelle adresse. L'adresse du premier octet doit être paire, voire même un multiple de 4.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 111

Page 112: Sylvain tisserant architecture et technologie des ordinateurs

V.8.b Espace d'adressage L'espace virtuel est le nombre de cellules mémoires qu'un programme peut adresser directement. Ce nombre dépend du nombre de bits utilisés pour manipuler les adresses au niveau des instructions. La mémoire physique disponible sur la machine peut avoir une taille différente de l'espace virtuel disponible pour chaque programme. L'espace physique peut être plus grand que l'espace virtuel. Dans cette configuration il est possible de charger plusieurs programmes à la fois. Lorsque le contrôle de l'unité centrale passe d'un programme à l'autre, l'exécution peut s'enchaîner rapidement sans attendre le chargement du nouveau programme depuis le disque. Comme l'unité centrale accède à la mémoire par des adresses comptant un plus grand nombre de bits que les adresses manipulées par le programme il faut être capable de "compléter" celles-ci. Cela peut se faire grâce aux registres de base dont nous parlerons plus loin. L'espace physique peut être plus petit que l'espace virtuel, ce qui était le cas lorsque le principe de cette technique a été développé. Il faut alors disposer d'un mécanisme capable de charger, à un moment donné, les parties du programme nécessaires à son exécution. Ce mécanisme est également utilisé dans des machines pour lequel l'espace physique est plus grand que l'espace virtuel. Il permet en effet un partage plus efficace de la mémoire entre plusieurs programmes concurrents.

V.8.c Principe de la séparation et de l'assemblage des adresses Le principe de séparation/assemblage des adresses est le fondement de toutes les techniques de gestion de la mémoire centrale. Une adresse peut toujours être vue comme l'assemblage d'un numéro de bloc et d'un déplacement à l'intérieur de ce bloc. Une adresse de N bits permet de repérer 2N cases. On peut la séparer en un numéro de bloc, codé sur B bits (les bits de poids fort), et un numéro de case dans le bloc sur N-B bits. Chaque bloc comptera 2N-B cases et il y aura 2B blocs, donc toujours 2N cases au total. Prenons un exemple numérique très simple pour illustrer ce principe. Considérons une mémoire comptant 16 cases, numérotées de 0 à 15. Les adresses permettant d'identifier les mots dans cette mémoire ont 4 bits. Nous nous intéressons à la case d'adresse 13 (marquée **** sur la figure). En binaire nous avons 13 = (1101)2. Si nous divisons la mémoire en deux blocs de huit mots, cette case 13 se situe à l'adresse 5 du bloc numéro 1 (6ème mot du 2ème bloc). Le numéro de bloc est donné par le bit de haut poids (à gauche) de l'adresse. Le déplacement dans le bloc est donné par les trois bits de droite : (101)2 = 5. Nous pouvons également diviser la mémoire en quatre blocs de quatre mots. Le numéro de bloc est alors donné par les deux bits de gauche

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 112

Page 113: Sylvain tisserant architecture et technologie des ordinateurs

(11)2 = 3 et le déplacement par les deux bits de droite (01)2 = 1. La case 13 est en effet à l'adresse 1 dans le bloc 3.

N-B bitsbloc de

2 motsN-B

déplacementdans le bloc

B bits

numéro de bloc

Figure 18

****

0

1

2

3

blocs de4 cases

blocs de8 cases

0

1

Figure 19

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 113

Page 114: Sylvain tisserant architecture et technologie des ordinateurs

Ce principe est facile à mettre en œuvre au niveau du matériel : les B lignes du bus d'adresse correspondant aux bits de poids fort sont connectées à un registre de B bits et les N − B autres lignes sont commandées par un autre registre de N − B bits. Ces registres peuvent être chargés indépendamment par l'unité de calcul des adresses effectives.

V.8.d Registre de base et pagination Pour optimiser l'utilisation de tout ordinateur il est rapidement devenu indispensable de pouvoir charger tout programme n'importe où en mémoire. Il faut donc un mécanisme permettant à partir des adresses virtuelles de calculer les adresses physiques. Une des méthodes les plus utilisées est celle des registres de base qui existent dans presque tous les ordinateurs. Le mécanisme est le suivant :

- Les programmes sont "relogeables" et toutes les adresses connues par le programmeur sont virtuelles, relatives au début du programme à l'adresse 0;

- Un registre spécial de l'unité centrale, appelé registre de base, contient l'adresse physique du début du programme dans la mémoire;

- Chaque fois que l'on fait une référence à la mémoire, on ajoute à l'adresse virtuelle trouvée dans le programme le contenu du registre de base.

Un registre de base permet également de construire des adresses physiques comptant un nombre différent de bits que les adresses virtuelles. Pour obtenir une plus grande souplesse dans la gestion de la mémoire centrale, l'espace virtuel de chaque programme est découpé en blocs, tous de taille identique, les pages. L'espace physique est découpé en blocs (ou pages physiques) de même taille que les pages de l'espace virtuel. La longueur des pages est toujours une puissance de 2 ce qui facilite l'obtention de l'adresse physique par assemblage binaire. Le mécanisme de gestion qui permet de passer d'une adresse virtuelle à une adresse physique dans un système de pagination passe par la table des pages. Les propriétés de la table de pages sont les suivantes :

- Il y a une table des pages pour chaque programme; - La table des pages contient une entrée pour chaque page virtuelle du programme; - Le début de la table des pages est chargé dans un registre : le registre de base de la table

de pages (RBTP); - Chaque entrée de la table peut contenir :

. des bits de contrôle : - page présente en mémoire/page absente; - page modifiée/non modifiée; - autorisation d'accès en écriture; - compteur d'utilisation; . deux adresses : - position de la page en mémoire secondaire (en général un

disque : unité, face, piste et secteur); - numéro du bloc de mémoire physique contenant la page, si la

page virtuelle est présente en mémoire.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 114

Page 115: Sylvain tisserant architecture et technologie des ordinateurs

Le registre de base et le registre de base de la table de pages font partie du contexte du

programme. La mise à jour de la table des pages est assurée par le système. L'exploitation de cette table pour le calcul de l'adresse physique peut être effectuée par le système, mais cela consomme une partie du temps CPU disponible. Pour libérer le système d'exploitation cette gestion peut être confiée à un circuit spécialisé : unité de gestion de la mémoire (MMU : Memory Management Unit) intercalée entre l'unité centrale et la mémoire. Le mécanisme de gestion de la mémoire peut se décomposer de la manière suivante : 1) L'adresse virtuelle est séparée en deux parties :

- numéro de page virtuelle. - déplacement dans la page : identique dans la page physique;

2) On ajoute le contenu du registre RBTP au numéro de page virtuelle obtenu lors de l'étape 1.

Cela nous donne l'adresse de l'entrée correspondante dans la table des pages. 3) On teste le bit de présence :

a) La page est présente. Le numéro du bloc physique contenant la page est chargé dans le registre de base. L'adresse physique est calculée en assemblant le registre de base au déplacement dans la page obtenu en 1 (fig. 20).

b) La page est absente. Il y a faute de page. L'adresse de la page en mémoire secondaire permet de chercher la page sur disque et de la charger en mémoire. La tâche en incombe au système d'exploitation, qui alloue l'unité centrale à un autre programme pendant ce temps. Après chargement le numéro du bloc physique contenant la page est placé dans la table des pages. On est alors ramené au cas 3a.

Pour accélérer la phase 3.a il est possible d'utiliser une mémoire associative (cf. prochain paragraphe) utilisant le numéro de page virtuelle comme étiquette et fournissant en sortie le numéro de bloc physique. Cette mémoire associative ne contient alors que les pages en mémoire. Si la recherche est infructueuse le système utilise la table des pages. Pour pouvoir charger une page en mémoire il faut disposer d'un bloc physique libre. Si ce n'est pas le cas il faut décharger une page (en première approximation effacer le bit indiquant que la page est en mémoire et effacer le numéro du bloc physique correspondant). Plusieurs stratégies sont possibles : aléatoire, FIFO ou LRU (cf : Systèmes d'exploitation). Une solution consiste à remplacer la page la moins récemment utilisée (LRU : Least Recently Used). C'est le rôle du compteur associé à chaque entrée de la table des pages. Il indique la plus récente référence à la page. D'autre part, si la page a été modifiée il faut la sauvegarder en mémoire secondaire avant de libérer l'emplacement physique. Le programme est écrit comme s'il pouvait être totalement contenu dans la mémoire principale, même si ce n'est pas le cas. A la limite, le programmeur n'a pas besoin de savoir qu'il y a une mémoire virtuelle : tout se passe comme si l'ordinateur était doté d'une énorme mémoire principale. Le mécanisme de pagination est transparent, sauf au niveau des performances qui dépendent de la charge du système.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 115

Page 116: Sylvain tisserant architecture et technologie des ordinateurs

Une autre fonction de l'unité de gestion de la mémoire consiste à vérifier la cohérence des attributs d'accès. Chaque tâche possède des attributs : mode utilisateur, mode superviseur, etc… Il en est de même pour les zones mémoires. On peut avoir :

- Lecture uniquement; - Superviseur uniquement; - Zone programme; - Zone donnée; - etc…

Si l'accès viole les attributs de la cible, la MMU doit interrompre la requête mémoire et engendrer une condition d'erreur ou une interruption particulière appelée exception.

1 0011011100 011100 11001001000 10001110001 0000011000 100101 0011101001 011010 01000011111 0110001110 000111 1001101100 01111

0011011000111001100

RBTP+

adresse virtuelle

présenceen mémoire

adresse enmémoiresecondaire

numéro debloc physique

01101 0011011000111001adresse physiqueRB

Figure 20

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 116

Page 117: Sylvain tisserant architecture et technologie des ordinateurs

V.9 Mémoire associative Une mémoire associative, ou mémoire adressable par le contenu, permet de chercher si une information, appelée descripteur ou clef, est contenue dans la mémoire et, dans cette hypothèse de fournir une information associée. Le descripteur est comparé simultanément à tous les mots de la mémoire associative. La figure 21 présente le schéma de principe d'une mémoire associative. La figure 22 explicite les cellules de base des deux matrices. La matrice 2 peut être très semblable à l'organisation des cellules dans une mémoire vive classique. Par contre la matrice 1 remplace le décodage des lignes.

CMatrice 1 Matrice 2

Registre D Registre A

Figure 21 La recherche en mémoire suppose le chargement préalable du descripteur dans le registre D. Ensuite toutes les opérations s'exécutent en parallèle sur tous les mots, sous l'effet d'une seule impulsion C. Une cellule de la matrice 1 transmet l'impulsion C si le contenu du point mémoire est identique au bit correspondant du registre D placé sur la même verticale. Dans le cas contraire l'impulsion C est arrêtée. En effet à la sortie de la cellule i (et à l'entrée de la cellule i+1) nous avons :

)QDQD(CC jijjijji1ji •••+ += Si on suppose qu'il y a dans la matrice 1 au plus une information identique à celle du descripteur, il sort de la matrice 1 au plus une impulsion Ci qui désigne le mot de la matrice 2 à charger dans le registre A.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 117

Page 118: Sylvain tisserant architecture et technologie des ordinateurs

Q

QMi j

Ci j

Dj

Ci j+1

Q

QM'i j

Ci

AjCellule de matrice 2Cellule de matrice 1

Figure 22

Une mémoire associative est souvent utilisée pour la gestion de la mémoire centrale. Les mémoires caches constituent un autre exemple d'utilisation des mémoires associatives. V.10 Mémoire cache ou antémémoire Le concept de mémoire virtuelle paginée peut être vu comme un cache, la mémoire physique constituant un cache pour la mémoire secondaire. D'une façon générale, on appelle cache tout dispositif matériel ou logiciel qui stocke dans une zone d'accès rapide une copie de données en petite quantité choisies parmi des données qui sont stockées dans une zone d'accès plus lent. Dans le cas de la pagination, la mémoire primaire est la mémoire physique et la mémoire secondaire est l'espace sur disque. La mémoire physique ne contient, à un instant donné, que les seules pages du programme utilisées récemment. Dans le cas d'un cache-mémoire, la mémoire primaire est une mémoire rapide, la mémoire secondaire est la mémoire principale de la machine. Le cache-mémoire ne contient, à un instant donné, que les copies de petits blocs de mots de la mémoire physique récemment référencés. Il y a cependant une nuance. Pour la pagination le temps nécessaire au chargement d'une page à partir du disque est long. Ce mécanisme est géré par le système et le programme en cours perd le contrôle de l'unité centrale. Pour l'antémémoire la gestion se fait uniquement au niveau du matériel et le programme en cours conserve la main.

On utilise pour les caches des mémoires statiques très rapides. La mémoire cache permet de combler en partie la différence entre les vitesses de l'unité centrale et de la mémoire. On trouve très souvent deux niveaux de mémoire cache. Le premier niveau est intégré au processeur et dispose d'un temps d'accès équivalent au cycle de fonctionnement de celui-ci. Le second niveau est de plus grande taille mais plus lent. Une mémoire cache intégrée au processeur, ou très proche, est basée sur une mémoire associative.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 118

Page 119: Sylvain tisserant architecture et technologie des ordinateurs

Les statistiques ont montré que 80 à 90 % des programmes se trouvent dans des boucles. C'est pourquoi une mémoire cache peut obtenir un taux de réussite, probabilité de trouver l'instruction dans le cache, de 70 à 90 %. L'emploi des mémoires caches est essentiel dans les architectures RISC. Certains processeurs disposent de deux caches pour les instructions et les données (architecture de Harvard). Même en dehors d'une boucle, comme le traitement des instructions est séquentiel on a intérêt à transférer les instructions par blocs. On appelle un tel bloc une ligne, équivalente à la page entre mémoire et disque. La figure 23 illustre le schéma de principe d'une architecture avec hiérarchisation de la mémoire. L'intégration sur une même plaquette silicium s'étend peu à peu. Elle peut aller aujourd'hui jusqu'au cache de niveau 2.

unité degestionmémoire(MMU)

cacheniveau 2

cacheniveau 1

mémoirecentrale disque

unitécentrale(CPU)

adressesvirtuelles

bus d'adresse

bus de données

Figure 23

V.11 Mémoire file ou FIFO Il existe un autre type de mémoire vive : la file d'attente ou FIFO. Cette abréviation signifie First In First Out, soit premier entré premier sorti. Une file dispose de deux bus de données distincts en entrée et en sortie. L'accès n'est pas aléatoire, l'ordre en sortie est identique à celui en entrée. Il n'y a pas d'adressage. L'utilisateur peut écrire dans la FIFO si le premier étage est libre et lire la FIFO que si le dernier étage est occupé. Une file est constituée de n registres à décalage comptant chacun m cases. Le nombre n correspond à la largeur des mots, alors que m est la profondeur de la file ou sa capacité. Un registre interne indique l'état (libre ou occupé) de chacun des étages. La logique de contrôle décale automatiquement chaque étage occupé vers un étage libre.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 119

Page 120: Sylvain tisserant architecture et technologie des ordinateurs

Logique de contrôle

n so

rties

n en

trées

sortie occupéeentrée occupée

Figure 24

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 120

Page 121: Sylvain tisserant architecture et technologie des ordinateurs

Mémoires mortes et logique programmable VI.1 Mémoires mortes Nous avons consacré le chapitre précédent à l'étude des mémoires vives, avec accès en lecture et écriture mais volatiles. Cependant pour certaines applications, il est nécessaire de pouvoir conserver des informations (programmes, données, …) de façon permanente même lorsque l'alimentation électrique est interrompue. On utilise alors des mémoires mortes ou mémoires à lecture seule (ROM : Read Only Memory). Dans ce cas les informations contenues en mémoire ne peuvent être accédées qu'en lecture. Les informations ne peuvent être modifiées ni intentionnellement, ni accidentellement. L'intérêt de ces mémoires réside dans le fait que cette mémoire permanente est accessible à la grande vitesse propre aux circuits électroniques à semi-conducteur.

VI.1.a Principe Extérieurement une mémoire morte ressemble à un bloc mémoire sans ligne d'entrée ni commande d'écriture. Ce système peut se restreindre à k lignes d'adresse, n lignes de sortie et un signal de sélection du circuit.

n lignesde sortie

k lignesd'adresse

2 mots de n bitsk

CS

Figure 1 Une telle mémoire morte contient 2k mots de n bits. Nous pouvons considérer que chacun de ces mots porte un code. Ainsi une mémoire morte peut être réalisée avec un encodeur de 2k lignes et n sorties associé à un décodeur pour activer une de ces 2k lignes (fig. 2). Nous avons vu qu'un

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 121

Page 122: Sylvain tisserant architecture et technologie des ordinateurs

encodeur peut être obtenu avec des diodes. La figure 3 donne l'exemple simple d'une mémoire morte de 4 mots de 4 bits, correspondant à la table de vérité suivante :

X1 X0 Y3 Y2 Y1 Y0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 1 1 1 1 1 1

Table 1

Décodeur

Encodeurk entrées

2 lignesk

n sorties

Figure 2

X

X

0

1

CS

Y0 Y1 Y2 Y3

Figure 3

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 122

Page 123: Sylvain tisserant architecture et technologie des ordinateurs

Tout comme pour les mémoires vives cette organisation n'est pas la plus économique. On utilise plutôt une organisation matricielle, une partie de l'adresse servant à identifier une ligne et le reste correspondant à une colonne. Tout ce qui a été dit sur l'assemblage des blocs mémoires pour augmenter la capacité ou la longueur des mots reste valable pour les mémoires mortes.

VI.1.b Application des ROMs Les domaines d'application des mémoires mortes sont très nombreux. Certains ont déjà été rencontrés dans ce cours, comme la conversion de code. La génération de caractères, pour un terminal ou une imprimante, en est un exemple. Un caractère peut être considéré comme une matrice de points, chaque point à afficher étant défini par un 1 dans la matrice. Chaque ligne de cette matrice est représentée par un mot de n bits, n étant le nombre de colonnes. Pour un certain nombre de polices permanentes, les matrices peuvent être stockées en mémoire morte dans le périphérique. Les ROMs peuvent être également utilisées pour conserver certains programmes et les données associées. C'est le cas pour les calculateurs de poche ou pour les programmes de démarrage et de chargement qui s'exécutent automatiquement lors de la mise sous tension d'un ordinateur.

Une mémoire morte peut également être utilisée pour générer une fonction numérique. Considérons par exemple la fonction sinus : sin (x) pour x variant entre 0 et π/2. Nous pouvons diviser ce domaine de variation [0, π/2] en N = 2k intervalles, la variable x prenant les valeurs centrales, c'est-à-dire :

[ ]N2

xet1N,0iavecx21ix i

π=δ−∈δ

+=

Chacune de ces valeurs est identifiée par l'indice i qui peut être utilisé comme une adresse. Si nous codons dans la cellule de mémoire associée le nombre :

]xsin)12[(EntièrePartief in

i −= nous obtenons une grandeur proportionnelle à sin xi, codée sur la totalité de la gamme dynamique des n bits. Nous obtenons ainsi une table de la fonction sinus (Look-up table). Une telle table associée à un compteur et à un convertisseur Numérique-Analogique peut servir à la génération de signaux périodiques. Une mémoire morte peut également être utilisée pour générer des fonctions logiques. Supposons que pour une application particulière nous ayons besoin de huit fonctions logiques f0 à f7 de deux variables a et b, par exemple :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 123

Page 124: Sylvain tisserant architecture et technologie des ordinateurs

⊕=⊕=+=+=+=

===

ba)b,a(fba)b,a(fba)b,a(fba)b,a(fba)b,a(fba)b,a(f

a)b,a(fba)b,a(f

7

6

5

4

3

2

1

0

b

Il est facile d'écrire la table de vérité de ces huit fonctions par rapport aux quatre combinaisons de a et b. Nous obtenons ainsi 8 x 4 = 32 valeurs possibles. Celles-ci peuvent être mémorisées dans une ROM 32 bits comptant 5 lignes d'adresse et une sortie. Trois bits servent à identifier la fonction fi, les deux autres lignes d'adresse correspondent aux variables a et b.

a

f

b

i

S32 bits

Figure 4 VI.2 Mémoires programmables par l'utilisateur : PROM Pour faire fabriquer une mémoire morte le client doit fournir la table de vérité au fabricant qui se charge de réaliser les masques, puis de produire les circuits. La réalisation des masques est une opération onéreuse qui suppose une production importante pour être amortie. Par ailleurs dans la phase de développement d'un système, on peut être amené à modifier le contenu d'une ROM, pour corriger des erreurs ou apporter des modifications. Cela peut s'avérer très coûteux. D'autre part la fabrication des premiers circuits demande quelques mois.

La mémoire programmable (PROM pour Programmable Read Only Memory) a été inventée pour offrir un gain de temps et d'argent durant la phase de mise au point. Une mémoire PROM, fabriquée en grande série, donc à bas prix, est programmée par l'utilisateur lui-même. Lorsque la table de vérité est validée, la ROM peut être réalisée industriellement pour la fabrication en grande série. Sinon la PROM est un composant financièrement intéressant pour les petites séries.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 124

Page 125: Sylvain tisserant architecture et technologie des ordinateurs

VI.2.a Techniques de programmation Plusieurs procédés sont possibles pour l'enregistrement de l'information binaire. Citons pour commencer la méthode des fusibles. Pour chaque bit ou nœud de la matrice existe une diode et un fusible. Initialement les fusibles sont conducteurs, les bits sont donc tous à 1. La définition des 0 se fait à l'aide d'un programmateur de PROM qui, en fonction de la table de vérité, détruit les fusibles en indiquant l'adresse du mot contenant le bit à modifier et en injectant un courant sur la sortie correspondante. Cette méthode de programmation présente quelques risques pour l'ensemble du circuit. Le schéma de la figure 5 est identique à celui de la figure 3, les fusibles encore présents assurant les mêmes connexions.

X

X

0

1

CS

Y0 Y1 Y2 Y3

Figure 5

Avec cette technique la programmation est irréversible. C'est également le cas pour la technique des anti-fusibles. Aucune connexion n'est initialement programmée, mais il est possible de créer un contact à l'intersection de chaque ligne et de chaque colonne en détruisant un diélectrique. Au moins deux technologies sont utilisées.

Dans la première (fig. 6) on fait fondre un diélectrique en forçant un courant important (environ 5 mA) dans une zone de très faibles dimensions située à l'intersection de deux électrodes l'une en silicium polycristallin et l'autre réalisée par un implant fortement dopé n+. Ce diélectrique est constitué de trois couches alternées d'oxyde et de nitrure de silicium : SiO2 - Si3N4 - SiO2. La présence du nitrure permet de réduire l'épaisseur du diélectrique. Lors de la fusion du diélectrique il y a diffusion de dopants, ce qui diminue la résistance du contact réalisé.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 125

Page 126: Sylvain tisserant architecture et technologie des ordinateurs

n+SiO2 SiO2

diélectrique

silicium polycristallin

Si contacts

n+

Figure 6 La seconde technologie (fig. 7) permet de réduire cette résistance, car le contact est réalisé par un alliage de tungstène, titane et silicium. Le diélectrique est cette fois du silicium amorphe entre deux électrodes métalliques (m1 et m2). Cette technique requiert moins de place que la première, mais elle est assez délicate à mettre en œuvre.

m1

m2SiO2

SiO2SiO2

silicium amorphe

Figure 7

Dans toutes les techniques précédentes la programmation irréversible, il est impossible de revenir en arrière. Toute modification suppose la programmation d'un nouveau circuit. Une autre technique offre la possibilité de multiprogrammation.

grille

grille flottante

source drain

n+n+

substrat p

Figure 8

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 126

Page 127: Sylvain tisserant architecture et technologie des ordinateurs

On utilise pour cela des transistors à effet de champ à structure MOS (Métal-Oxyde-Semiconducteur) avec une grille supplémentaire flottante. Dans un transistor MOS classique la grille est utilisée pour induire un canal entre la source et le drain.

Dans l'exemple de la figure 8 une tension positive de la grille va attirer des électrons et repousser des trous. Par ailleurs une partie des électrons attirés se recombinent avec des trous. Une inversion de population se crée induisant un canal n entre les implants de la source et du drain. Le transistor devient passant. Pour programmer un tel nœud on fait alors circuler un courant intense entre la source et le drain. Certains électrons acquièrent une énergie leur permettant d'atteindre la grille flottante. Ils y sont alors piégés. Lorsque la charge piégée est suffisante elle masque le champ électrique induit par la grille et le transistor est bloqué. Le courant de fuite étant très faible cette charge peut se conserver très longtemps.

La programmation est réversible, il suffit de décharger cette grille flottante. Une première

solution consiste à exposer le circuit à un rayonnement ultraviolet pendant quelques dizaines de minutes. Ces circuits sont équipés d'une fenêtre en quartz et encapsulés dans un boîtier en céramique pour résister à l'échauffement. Cette mise en œuvre augmente le prix des composants, mais cela n'est nécessaire que pour le développement. Pour la production le même circuit existe sans fenêtre et en boîtier plastique. Cette technique correspond aux mémoires mortes effaçables : EPROM (Erasable Programmable Read Only Memory). Il est également possible de décharger la grille flottante par effet tunnel en appliquant des tensions suffisamment élevées entre la grille, la source et le drain. Cet effacement est plus rapide et n'impose pas de retirer le circuit du système dans lequel il est installé. Cela correspond à la famille des mémoires mortes programmables et effaçables électriquement : EEPROM (Electrically Erasable Programmable Read Only Memory).

La différence entre les EEPROM et les mémoires vives réside dans la vitesse d'écriture. Le cycle d'écriture d'une EEPROM est environ 1000 fois plus long que celui d'une RAM. Par contre rappelons que les temps d'accès en lecture des mémoires RAM, ROM, PROM, EPROM et EEPROM sont comparables. Citons enfin un composant hybride qui associe dans un même boîtier une RAM et une EEPROM de même capacité : la mémoire NOVRAM (NOn Volatile RAM). L'EEPROM permet de réaliser en moins de 10 ms une sauvegarde globale de la RAM. Cela permet une sauvegarde du contenu de la mémoire en cas de coupure d'alimentation électrique. V.3 Réseaux logiques programmables Les mémoires mortes programmables furent les premiers membres d'une famille de composants : les circuits logiques programmables (CLP ou PLD : Programmable Logique Device). Cette famille est aujourd'hui très nombreuse et très variée, comme l'illustre la multitude d'acronymes : PAL, SPLD, EPLD, CPLD, FPGA, etc. La figure 9 donne une représentation symbolique simplifiée d'une PROM de 16 mots de 4 bits. Les portes ET reçoivent 4 variables directes ou inverses. Les connections de gauche, correspondant au décodeur et représentées par des disques noirs, sont figées. Les croix à droite représentent des connexions programmables. Les

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 127

Page 128: Sylvain tisserant architecture et technologie des ordinateurs

portes OU peuvent recevoir jusqu'à 16 variables. Chaque sortie d'une PROM est ainsi représentée comme une somme canonique de produits.

I0III 123

Y0YYY 123

Figure 9

Dans un Programmable Array Logic (PAL) la matrice des connexions OU est figée et la matrice des connexions ET est programmable (fig. 10). Un Programmable Logic Array (PLA ou FPLA : Field Programmable Logic Array) offre le maximum de souplesse car les deux matrices des OU et ET sont programmables comme l'indique la figure 11. Ces circuits constituent la famille de SPLDs (Simple Programmable Logic Device).

Ce type de circuits n'a cessé de se sophistiquer au fil du temps. Certains canaux

d'entrée/sortie peuvent être bidirectionnels, les deux portes "3 états" en commandant le sens

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 128

Page 129: Sylvain tisserant architecture et technologie des ordinateurs

pouvant être programmable. Par ailleurs, des sorties peuvent être injectées dans le réseau de portes ET, offrant ainsi la possibilité d'utiliser des variables intermédiaires.

On peut également trouver un réseau de bascules de type D avec une horloge commune.

L'entrée d'une bascule peut être programmée au niveau des réseaux de portes ET et OU. Sa sortie peut être accessible à l'extérieur et utilisée comme variable interne injectée dans le réseau de connexions programmables. Il est alors possible de programmer des fonctions séquentielles.

La figure 12 illustre quelques unes de ces possibilités. On y trouve une bascule D dont la

sortie est injectée dans le réseau programmable, matérialisé par les petits carrés. La sortie doit être validée par le signal OE (Output Enable).

I0III 123

Y0YYY 123

Figure 10

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 129

Page 130: Sylvain tisserant architecture et technologie des ordinateurs

I0III 123

Y0YYY 123

Figure 11

L'évolution a conduit à des composants plus complexes. Ce sont d'abord les CPLDs (Complex Programmable Logic Device), puis les FPGA (Field Programmable Gate Array). Ce sont de relativement gros ensembles de cellules logiques programmables (comparable à ce que nous venons de présenter) qui peuvent être connectées de différentes matières. Un CPLD est composé d'un certain nombre de PALs, ou macrocellule. La figure 12 donne un exemple de ce que peut être une macrocellule. Ces macrocellules sont regroupées en blocs logiques, qui peuvent être reliés via une matrice de connexion programmable (fig. 13). Les macrocellules d'un même bloc sont généralement interconnectées.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 130

Page 131: Sylvain tisserant architecture et technologie des ordinateurs

D Q

QClK

Horlorge OE

sortie

Figure 12

M

atri

ce d

e co

nnec

tion

Blo

c L

ogiq

ue

Blo

c L

ogiq

ueB

loc

Log

ique

Macrocellule

Figure 13

Un FPGA offre le maximum de capacité logique. Il comprend des blocs d'entrée/sortie, des blocs logiques et des matrices de connexion, le tout étant programmable (fig. 14). Les architectures de ces circuits sont très variées. A une exception près, les techniques de programmation des FPGAs sont identiques à celles que nous avons décrites pour les mémoires mortes programmables. Il existe une technique supplémentaire pour les FPGAs. La programmation de certains FPGAs se fait à l'aide d'une mémoire statique incorporée. La sortie d'un point mémoire de cette RAM peut commander l'état d'un transistor pour assurer ou non une connexion. Cela permet une mise à jour de la programmation au sein du système. Par contre, il faut charger cette mémoire à chaque démarrage et tenir compte du temps nécessaire à ce chargement. Celui-ci peut se faire à partir d'une ROM ou être effectué par un ordinateur. Ces composants complexes sont nécessairement accompagnés de logiciels de programmation, routage et de simulation.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 131

Page 132: Sylvain tisserant architecture et technologie des ordinateurs

Réseau de connexionprogrammable

Bloc logique

Bloc d'entrée/sortie

Figure 14

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 132

Page 133: Sylvain tisserant architecture et technologie des ordinateurs

Unité Centrale de Traitement : Processeur

VII.1 Introduction L'unité centrale de traitement (CPU : Central Processing Unit), encore dénommée processeur ou microprocesseur, est l'élément de l'ordinateur qui interprète et exécute les instructions d'un programme. C'est le cerveau de l'ordinateur. Mais on trouve aussi des processeurs, dits spécialisés, qui peuvent décharger l'unité centrale et assurer des tâches en parallèle. Ceci est très fréquent pour la gestion des entrées/sorties. Un processeur est aujourd'hui un circuit électronique à très haute densité d'intégration (ULSI : Ultra Large Scale Integration), qui peut compter quelques dizaines de millions de transistors. Le premier circuit de ce type a été créé par Intel en 1971 : le 4004 conçu pour équiper des calculatrices. Il comptait alors 2300 transistors pour 46 instructions. La loi de Moore, formulée en 1965 par un des fondateurs de la compagnie Intel, qui prédit un doublement des capacités des processeurs tous les 18-24 mois, a jusqu'à présent été relativement bien suivie. Il ne s'agit pas seulement de l'augmentation de la fréquence de fonctionnement ou du nombre de transistors. Les concepteurs cherchent aussi à augmenter la quantité de traitement par cycle d'horloge.

Une unité centrale se compose d'au moins deux unités fonctionnelles : l'unité de commande et l'unité de calcul. A l'origine celle-ci s'identifiait à l'unité arithmétique et logique, chargée de l'exécution des opérations booléennes et des opérations arithmétiques (addition, soustraction, multiplication, division, comparaison, etc.) pour des entiers. En parallèle à cette unité, on peut trouver une unité de calcul sur les réels ainsi qu'une unité de traitement dédiée aux opérations multimédia (traitement des images et du son).

A côté de ces deux unités fonctionnelles on trouve une interface de gestion des

communications sur le bus externe, ainsi qu'une mémoire cache. Celle-ci est baptisée de premier niveau car située à proximité immédiate du cœur du processeur. Mais depuis quelques années, les concepteurs ont été amenés à embarquer également la mémoire de second niveau. Ces caches peuvent être scindés pour séparer les instructions et les données (architecture Harward). L'unité de commande contient une unité chargée du décodage des instructions, une unité pour le calcul des adresses des données à traiter. On y trouve également le séquenceur qui contrôle le fonctionnement des circuits de l'unité de calcul nécessaires à l'exécution de chaque instruction.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 133

Page 134: Sylvain tisserant architecture et technologie des ordinateurs

L'unité centrale comprend un certain nombre de registres pour stocker des données à traiter, des résultats intermédiaires ou des informations de commande. Parmi ces registres certains servent pour les opérations arithmétiques ou logiques, d'autres ont des fonctions particulières comme le registre instruction (RI) qui contient l'instruction à exécuter, le compteur ordinal (CO) qui pointe sur la prochaine instruction ou un registre d'état (RE ou PSW : Processor Status Word) contenant des informations sur l'état du système (retenue, dépassement, etc.).

La figure 1 présente un schéma général très simplifié de l'organisation de l'unité centrale, sans tenir compte de la présence d'une mémoire cache et de l'interface avec le bus externe.

unité

de c

alcu

l

registres

décodeur

calcul d'adresse

séquenceur

RICO

RE

Unité deCommande

UAL

logique decontrôle H

Figure 1 Avant d'étudier le fonctionnement de l'unité de commande nous allons passer rapidement au travers de certains éléments de l'ALU, c'est-à-dire le traitement numérique et logique des entiers. Nous avons, en fait, déjà étudié dans les chapitres précédents les principales fonctions intervenant dans l'ALU pour des entiers non signés : comparaison, addition, soustraction,

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 134

Page 135: Sylvain tisserant architecture et technologie des ordinateurs

décalage, etc. Nous allons étendre cette étude aux entiers signés et pour cela nous commençons par étudier la représentation des nombres en machine. VII.2 Représentation des nombres

VII.2.a Entiers non signés Les entiers positifs ou nuls peuvent être codés en binaire pur. A l'aide de n bits nous pouvons représenter 2n nombres compris entre 0 et 2n − 1 :

∑−

==

1n

0k

kk 2aA

Sur le papier on utilise souvent les notations, plus compactes, octale ou hexadécimale : un chiffre (de 0 à 8) en octal représente 3 bits et un caractère (de 0 à F) hexadécimal permet de représenter 4 bits (table 1). Ainsi un octet s'écrit comme deux caractères hexadécimaux.

binaire octal binaire hexadécimal 000 0 0000 0 001 1 0001 1 010 2 0010 2 011 3 0011 3 100 4 0100 4 101 5 0101 5 110 6 0110 6 111 7 0111 7

1000 8 1001 9 1010 A 1011 B 1100 C 1101 D 1110 E 1111 F

Table 1

Si on n'utilise qu'une seule représentation binaire des entiers non signés, on rencontre plusieurs manières de coder les entiers signés. Nous allons en étudier quelques-unes. La table 2

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 135

Page 136: Sylvain tisserant architecture et technologie des ordinateurs

présente une illustration sur 9 bits de ces différents codes : le bit de signe, le plus à gauche, y est mis en évidence.

Valeur décim.

signe et val. absolue

complément. vrai

complément. restreint

binaire décalé

+127 0 11111111 0 11111111 0 11111111 1 11111111 … … … … … +1 0 00000001 0 00000001 0 00000001 1 00000001 +0 0 00000000 0 00000000 0 00000000 1 00000000 −0 1 00000000 1 11111111 −1 1 00000001 1 11111111 1 11111110 0 11111111 … … … … … −127 1 11111111 1 00000001 1 00000000 0 00000001 −128 1 00000000 0 00000000

Table 2

VII.2.b Entiers signés sous la forme signe et valeur absolue L'idée la plus naturelle pour coder des entiers signés consiste à ajouter le signe sous la forme d'un bit supplémentaire : 0 pour les entiers positifs et 1 pour les entiers négatifs. Soit pour n+1 bits :

−=

== ∑

=1)1(signe

1)0(signeavec2a)a(signeA

1n

0k

kkn

On code alors 2n+1 entiers compris entre −(2n − 1) et 2n − 1. Cependant le zéro possède deux représentations : +0 et −0, ce qui peut être un inconvénient, en particulier dans certains tests.

VII.2.c Entiers signés en complément vrai Nous avons vu que la représentation en complément à deux facilite les opérations arithmétiques d'addition et de soustraction. Notons A+ le complément vrai, ou complément à deux, d'un entier positif, défini par :

1AA +=+ Il est facile de vérifier que :

)1àbitsn(12AA n −=+ donc :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 136

Page 137: Sylvain tisserant architecture et technologie des ordinateurs

)bitsn(0AA ≡+ + Par exemple : A 0 1 1 0 1 0 0 1

+ A+ 1 0 0 1 0 1 1 1

1 0 0 0 0 0 0 0 0

Le complément vrai d'un entier peut donc être assimilé à son opposé. Considérons le

codage sur n+1 bits. Par convention nous choisissons d'écrire tout entier positif avec le bit de plus haut poids an à 0 et sa valeur algébrique sur n bits. Nous pouvons ainsi coder 2n entiers positifs de 0 à 2n − 1. Prenons le complément vrai de tous ces mots de n+1 bits. Commençons par le zéro. Son complément est constitué de (n+1) bits à 1. En additionnant 1, pour passer au complément vrai, la retenue se propage jusqu'au dernier bit et nous obtenons (n+1) bits à 0 : A 0 0 0 0 0 0 0 0

A 1 1 1 1 1 1 1 1

A+ 1 0 0 0 0 0 0 0 0

Dans cette représentation, il n'y a donc qu'un seul zéro. Tout autre entier positif possède au moins un bit à 1. Dans le complément tous les bits à 1 deviennent des 0. Lors de l'addition de 1, pour passer au complément vrai, le premier bit à 0 arrête la propagation de la retenue et les bits de plus haut poids restent inchangés : A 0 X X X 1 0 0 0 X = indifférent

A 1 X X X 0 1 1 1

A+ 1 X X X 1 0 0 0

On remarque en particulier que le bit de plus haut poids de A+ est toujours égal à 1. Ce bit an peut donc être interprété comme un bit de signe : 0 pour les entiers positifs et 1 pour les entiers négatifs. Considérons un entier positif A et son opposé B = −A. Nous pouvons écrire leur représentation binaire respective :

A → (0 an−1 an−2 … a1 a0) et B → (1 bn−1 bn−2 … b1 b0) Compte tenu de notre convention nous obtenons la valeur de l'entier positif A en utilisant la somme classique sur les n bits de bas poids :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 137

Page 138: Sylvain tisserant architecture et technologie des ordinateurs

∑−

==

1n

0k

kk 2aA

Comme la représentation binaire de B est le complément vrai de celle de A, nous pouvons écrire :

0 an-1 an-2 ……. a1 a0

+ 1 bn-1 bn-2 ……. b1 b0

1 0 0 0 ……. 0 0

Soit encore : an-1 an-2 ……. a1 a0

+ bn-1 bn-2 ……. b1 b0

1 0 0 ……. 0 0

C'est-à-dire :

n1n

0k

kk

1n

0k

kk 22b2a =+ ∑∑

=

=

ou

n1n

0k

kk 22bA =+ ∑

=

Donc :

n1n

0k

kk 22bAB −=−= ∑

=

En prenant en compte le bit de signe, nous pouvons rassembler les deux expressions précédentes donnant la valeur numérique associée à une représentation binaire en complément à deux sur n+1 bits sous une forme générale :

nn

1n

0k

kk 2a2aA −= ∑

=

Ce codage nous permet de représenter 2n+1 nombres entiers compris entre −2n et 2n − 1.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 138

Page 139: Sylvain tisserant architecture et technologie des ordinateurs

VII.2.d Entiers en représentation biaisée

En binaire pur, avec n+1 bits nous pouvons représenter 2n+1 entiers compris entre 0 et 2n+1-1. Si nous soustrayons à chacun des nombres ainsi représentés la valeur médiane de cet intervalle, soit 2n, nous obtenons des entiers signés compris entre -2n et 2n - 1. Cela correspond à la représentation biaisée ou décalée. Pour n+1 bits le biais à soustraire est 2n :

nn

0k

kk 22aA −=∑

=

Nous pouvons remarquer que cette représentation est identique au complément vrai à une inversion de la convention du bit de signe près : 0 pour les valeurs négatives et 1 pour les valeurs positives. En effet l'expression précédente peut encore s'écrire :

nn

1n

0k

kk 2)a1(2aA −−= ∑

=

En particulier, le bit de signe du zéro est également 1.

VII.2.e Nombres fractionnaires en virgule fixe Pour le codage des entiers on attribue un poids 1 au bit de poids le plus faible. Si nous lui attribuons un poids 2−m avec n bits nous pouvons écrire :

mm

1n

0k

kk1n

0k

mkk

2A

2

2a2aF ===

∑∑

=−

=

Les m bits de poids faibles représentent la partie fractionnaire du nombre et les n−m bits de poids forts sa partie entière. La position de la virgule est fixée par le choix de m. Cette représentation est applicable aux représentations signées. En valeur absolue la plus petite valeur représentée correspond à 2-m, et la grande à 2n-m (ou presque), soit une gamme dynamique (rapport entre ces deux valeurs extrêmes) de 2n.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 139

Page 140: Sylvain tisserant architecture et technologie des ordinateurs

VII.2.f Nombres en virgule flottante En calcul scientifique on a souvent besoin de manipuler des nombres très grands ou très petits. Pour cela on utilise la notation exponentielle, sous la forme : A = ± M 2E avec 2-1 ≤ M < 1 où M est la mantisse et E l'exposant. La précision de la représentation dépend du nombre de bits réservés à la mantisse. Les formats ont été, et sont encore, très variés selon les constructeurs et les processeurs. Il existe cependant des standards, comme la norme IEEE 754. Dans celle-ci la représentation en simple précision est codée sur 32 bits.

S

mantisseexposant

Figure 2

Ce format comporte le bit de signe de la mantisse (bit 31), suivi de n = 8 bits pour l'exposant en représentation biaisée (bits 23 à 30), puis de m = 23 bits pour la mantisse codée en virgule fixe (bits 0 à 22).

Sauf pour le zéro (codé par un mot nul : 000…0) nous pouvons toujours choisir l'exposant de telle façon que la mantisse soit comprise entre 0.5 et 1. Cela signifie que le bit de plus haut poids de la mantisse est toujours égal à 1 : la mantisse est dite normalisée. Ce bit peut être oublié (en particulier dans la norme IEEE 754), on gagne ainsi un bit pour la résolution. On dit alors que la mantisse est à bit caché. Le choix de la représentation biaisée pour l'exposant permet, dans ce cas, d'éviter toute confusion entre les représentations du zéro et du nombre 1/2. En effet 1/2 = 0,5 20. Le bit de signe de E = 0 en représentation biaisée étant 1, il y a un bit à 1 dans la représentation binaire avec mantisse à bit caché de 1/2.

La norme autorise de dénormaliser la mantisse pour représenter des nombres plus petits

que 0.1 2-127 (par exemple 0.0001 2-127). Lorsque les huit bits de l’exposant sont à 1, selon la mantisse nous avons :

- M = 0, représente ± ∞ ; - M ≠ 0, le résultat n’est pas un nombre (NaN : Not a Number).

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 140

Page 141: Sylvain tisserant architecture et technologie des ordinateurs

VII.3 Opérations arithmétiques et logiques Le traitement des opérations logiques (ET, OU inclusif, NON, OU exclusif, etc…) est direct en électronique numérique. Outre ces fonctions logiques l'unité arithmétique et logique est chargée de l'exécution d'opérations arithmétiques comme addition, soustraction, décalage et multiplication. Nous avons déjà étudié le principe de l'additionneur-soustracteur. Etudions rapidement le principe de la multiplication. La multiplication ou la division d'un entier non signé par une puissance de deux (2m) revient à effectuer un décalage de m cases respectivement vers la gauche ou la droite et à remplacer les cases "vides" par des 0. Considérons un entier non signé codé sur n bits :

∑−

=

=1n

0k

kk 2aA

Multiplions ce nombre par 2m :

∑∑−+

=

=

+ ===1mn

mk

kmk

1n

0k

mkk

m 2a2aA2B

Il faut donc n+m bits pour coder le résultat et nous pouvons écrire pour B :

−+∈∀=

−∈∀==

−+

=∑ ]1mn,m[kab

]1m,0[k0bavec2bB

mkk

k1mn

0k

kk

Ainsi lorsqu'on multiplie deux nombres de n bits il peut falloir jusqu'à 2n bits pour contenir le résultat. Dans le cas des nombres signés en complément vrai il faut apporter une attention particulière au bit de signe. Avant la multiplication on procède à une extension de signe pour passer à 2n bits. C'est-à-dire qu'on recopie le bit de signe dans les n bits supplémentaires de haut poids (fig. 3).

S S S

Figure 3

Considérons en effet un entier signé A codé en complément vrai sur n bits :

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 141

Page 142: Sylvain tisserant architecture et technologie des ordinateurs

1n1n

2n

0k

kk 2a2aA −

=−= ∑

et un nombre B obtenu à partir de A par extension de signe sur m bits (m > n) :

−−∈∀==−∈∀=

− ]1m,1n[kaab]1n,0[kab

1nsk

kk

Vérifions que A et B représentent la même quantité algébrique.

1m1m

2m

0k

kk 2b2bB −

=−= ∑

Développons :

( )[ ]

1n1n

2n

0k

kk

nmnm1n1n

2n

0k

kk

nm1nm

0k

k1n1n

2n

0k

kk

1m2m

1nk

k1n

2n

0k

kk

1m1n

2m

1nk

k1n

2n

0k

kk

2a2a

2122a2a

222a2a

22a2a

2a2a2aB

−−

=

−−−−

=

−−−

=

−−

=

−−

−=−

=

−−

−=−

=

−=

−−+=

−+=

−+=

−+=

∑∑

∑∑

∑∑

Ce que nous voulions montrer.

Considérons maintenant la multiplication par 2 d’un entier signé A codé sur n bits :

1n1n

2n

0k

kk 2a2aA −

=−= ∑

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 142

Page 143: Sylvain tisserant architecture et technologie des ordinateurs

nn

1n

0k

kk

n1n

1n

1k

k1k

n1n

2n

0k

1kk

2b2b

2a2a

2a2aA2B

−=

−=

−==

=

=−

=

+

Le résultat nécessite donc n+1 bits et nous avons pour le codage de B :

∈∀==

− ]n,1[kab0b

1kk

0

Donc après extension du bit de signe une multiplication par une puissance de deux (2m) est réalisée en décalant de m cases vers la gauche le mot binaire et en injectant des 0 dans les m bits de bas poids. Cette technique conserve automatiquement le signe du résultat. Réalisons la division entière (sans partie fractionnaire) par 2 d’un entier signé A :

1n1n

2n

0k

kk

1n1n

2n

0k

k1k

1n1n

2n1n

3n

0k

k1k

2n1n

3n

0k

k1k

2n1n

2n

1k

1kk

2b2b

2a2a

2a2a2a

2a)21(2a

2a2a2AB

−−

=

−−

=+

−−

−−

=+

−−

=+

−−

=

−=

−=

−+=

−+=

−==

Nous avons donc pour le codage de B sur n bits :

==

−∈∀=

−−

+

signedebitduonconservatiaab

]2n,0[kab

s1n1n

1kk

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 143

Page 144: Sylvain tisserant architecture et technologie des ordinateurs

Pour une division il faut donc conserver et propager le bit de signe dans le décalage à droite :

0S

S

multiplication

division

Figure 4

La multiplication de deux entiers signés de n bits en complément vrai se ramène à une combinaison de décalages et d'additions et éventuellement une soustraction. En effet :

B2aB2aBA2a2aA 1n1n

2n

0k

kk

1n1n

2n

0k

kk

−−

=

−−

=−=×⇒−= ∑∑

L'algorithme de Booth permet de réduire le nombre d'additions en repérant les séries de 0 et de 1. Dans le cas des zéros il n'y a que des décalages à effectuer. Dans le cas d'une série de 1 il suffit de se rappeler que :

( ) p1n1pnppm

0k

kpm

pk

k 22122222 −=−== ++−−

==∑∑

Donc :

( )B22B2 p1nm

pk

k −= +

=∑

Les m−p+1 décalages et additions sont remplacés par deux décalages, une addition et une soustraction. La figure 5 donne une représentation symbolique de l'ALU, comprenant deux opérandes en entrée A et B, une destination D = F(A, B), n lignes en entrée permettant de sélectionner la fonction F à exécuter, d’apporter un éventuel report de retenue et de synchroniser le fonctionnement de l'unité, ainsi que m sorties indiquant une éventuelle retenue (carry), un dépassement de capacité (overflow), un résultat négatif, nul ou positif, etc. Les opérandes et la destination sont toujours des registres.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 144

Page 145: Sylvain tisserant architecture et technologie des ordinateurs

A B

D

UAL C, O, N, Z, P, etc...Fonction,retenue,contrôle mn

Figure 5 Les premiers ordinateurs disposaient d'opérateurs spécifiques câblés. Aujourd'hui dans les ordinateurs modernes on trouve de moins en moins de circuits de ce type. Il n'existe par exemple plus de circuits propres à la multiplication ou à la division. L'enchaînement des actions à entreprendre pour réaliser une multiplication (décalages, additions et soustractions) est géré par l'unité de commande. Il en est de même pour le chargement des opérandes, la sélection des opérations à exécuter, etc. VII.4 Réalisation d’un multiplieur Nous nous intéressons dans ce paragraphe à la réalisation d’un multiplieur. Nous avons vu qu’une multiplication peut être obtenue par une succession d’additions et de décalages. Un tel multiplieur comprend une composante chargée de réaliser les opérations élémentaires et une logique de contrôle chargée d’enchaîner ces opérations. Cette étude nous donnera une vision simple des rôles respectifs de l’unité de calcul et de l’unité de commande d’un processeur. Il existe de nombreuses manières d’implémenter un multiplieur, nous nous proposons ici de transposer le plus directement possible le processus que nous avons expliqué un peu plus haut. Dans un premier temps choisissons des composants permettant de réaliser cette multiplication. Si nous travaillons sur n bits nous savons que le résultat tiendra sur 2n bits. Il nous faut donc deux registres de 2n bits (R0 et R1) destinés à contenir respectivement le multiplicande et le multiplicateur. Ils doivent être chargés avec extension du bit de signe. Il nous faut également un additionneur de 2n bits et un registre de 2n bits (ACC) pour contenir le résultat des additions successives. Le registre contenant le multiplicande doit être un registre à décalage à gauche avec chargement série de 0 à droite. Le registre contenant le multiplicateur doit être un registre à décalage à droite avec accès au contenu du bit de poids faible. Explicitons sur un exemple la suite des opérations à réaliser. Travaillons avec n = 4 bits. Effectuons la multiplication suivante : 3 × −6 = −18. En binaire sur 4 bits, nous avons 3 = 0011 et −6 = 1010, ce qui nous donne après extension du bit de signe sur 8 bits 3 = 00000011 et −6 = 11111010.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 145

Page 146: Sylvain tisserant architecture et technologie des ordinateurs

Initialisation des registres : ACC 00000000 R0 00000011 R1 11111010 C 0000 1ère étape : ACC 00000000 (pas d’addition) R0 00000110 R1 01111101 C 0001 2ème étape : ACC 00000110 R0 00001100 R1 00111110 C 0010 3ème étape : ACC 00000110 (pas d’addition) R0 00011000 R1 00011111 C 0011 4ème étape : ACC 00011110 R0 00110000 R1 00001111 C 0100 5ème étape : ACC 01001110 R0 01100000 R1 00000111 C 0101 6ème étape : ACC 10101110 R0 11000000 R1 00000011 C 0110 7ème étape : ACC 01101110 R0 10000000 R1 00000001 C 0111 8ème étape : ACC 11101110 R0 00000000 R1 00000000 C 1000 Interprétons le résultat obtenu ACC = 11101110. Le bit de signe est 1, le résultat est donc négatif. Calculons sa valeur : ACC = 2 + 22 + 23 + 25 + 26 − 27 = −18. Nous obtenons bien le résultat correct. Remarquons que toutes les opérations ont été effectuées sur 2n bits sans tenir compte des débordements lors des décalages de R0 ni des retenues lors des additions.

Nous avons introduit un compteur C pour compter les 2n itérations nécessaires. La figure 6 schématise l’organigramme du multiplieur. R10 correspond au bit le moins significatif du registre R1. Faisons l’inventaire des signaux nécessaires pour commander le fonctionnement des cinq composants du multiplieur :

- registre ACC : · remise à zéro : RAZ_ACC · chargement : W_ACC

- registre R0 : · chargement : W_R0 · décalage : D_R0

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 146

Page 147: Sylvain tisserant architecture et technologie des ordinateurs

- registre R1 : · chargement : W_R1 · décalage : D_R1

- additionneur : · aucun signal

- compteur C : · remise à zéro : RAZ_C · incrémentation : I_C

Initialisation :RAZ de ACC et du compteur CChargement de R0 et R1avec extension du bit de signe

R10

ACC = ACC + R0

= 1

= 0

Décalage à gauche de R0Décalage à droite de R1Incrémentation du compteur C

C = 2n TerminéOuiNon

Figure 6 Il nous faut maintenant étudier l’automate qui doit produire ces signaux. A partir de l’organigramme précédent nous pouvons identifier quatre états :

- Initialisation : · RAZ_ACC = 1, W_ACC = 0 · W_R0 = 1, D_R0 = 0 · W_R1 = 1, D_R1 = 0 · RAZ_C = 1, I_C = 0

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 147

Page 148: Sylvain tisserant architecture et technologie des ordinateurs

- Addition : · RAZ_ACC = 0, W_ACC = 1 · W_R0 = 0, D_R0 = 0 · W_R1 = 0, D_R1 = 0 · RAZ_C = 0, I_C = 0

- Décalages et incrémentation : · RAZ_ACC = 0, W_ACC = 0 · W_R0 = 0, D_R0 = 1 · W_R1 = 0, D_R1 = 1 · RAZ_C = 0, I_C = 1

- Opération terminée : · RAZ_ACC = 0, W_ACC = 0 · W_R0 = 0, D_R0 = 0 · W_R1 = 0, D_R1 = 0 · RAZ_C = 0, I_C = 0

Nous constatons que nous pouvons limiter le nombre de signaux de commande en effet : RAZ_ACC = W_R0 = W_R1 = RAZ_C D_R0 = D_R1 = I_C Par contre nous avons besoin d’un signal supplémentaire pour indiquer à l’extérieur que l’opération est terminée ou non. L’automate doit donc produire quatre signaux de commande que nous notons INIT, W_ACC, ITER et FIN, avec : RAZ_ACC = W_R0 = W_R1 = RAZ_C = INIT D_R0 = D_R1 = I_C = ITER Pour identifier quatre états différents nous avons besoin de 2 variables que nous notons Q0 et Q1. Nous choisissons la convention suivante :

Q1 Q0 Etat INIT W_ACC ITER FIN 0 0 Initialisation 1 0 0 0 0 1 Addition 0 1 0 0 1 0 Décalages et incrémentation 0 0 1 0 1 1 Opération terminée 0 0 0 1

Table 3

A partir de cette table 3, il est très facile d’exprimer les quatre signaux de commande à partir des variables d’état. Il nous suffit donc de construire ces deux variables d’état. Pour cela nous devons tenir compte du bit le moins significatif du registre R1 (R10) et d’un autre signal indiquant que le compteur a atteint la valeur maximale 2n que nous notons C_max. Par convention nous choisissons C_max = 1 pour indiquer que le compteur est égal à 2n.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 148

Page 149: Sylvain tisserant architecture et technologie des ordinateurs

Nous avons pour les signaux de commande :

=

=

=

=

10

10

10

10

QQFIN

QQITER

QQACC_W

QQINIT

R10 C_max Q1 Q0 Q1+ Q0

+

0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 1 X X 0 1 0 0 X X 0 1 0 1 X X 0 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 0 1 1 0 0 1 1 0 1 0 1 0 0 1 1 0 1 1 X X 1 1 0 0 X X 1 1 0 1 X X 1 1 1 0 1 1 1 1 1 1 1 1

Table 4

La table précédente résume les diverses transitions que peut subir l’automate de contrôle. Les variables Q et Q+ correspondent respectivement aux états avant et après la transition. Nous avons repéré plusieurs configurations impossibles :

- Q0 = Q1 = 1 (terminé) et C_max = 0, alors que pour passer dans l’état terminé il faut que le

compteur ait atteint sa valeur maximale. - Q0 = Q1 = 0 (initialisation) et C_max = 1, alors que la phase d’initialisation met à zéro le

compteur. - Q0 = 1 et Q1 = 0 (addition) et C_max = 1, si le compteur a atteint sa valeur maximale

l’automate passe dans l’état terminé, pas addition.

Utilisons des tableaux de Karnaugh, présentés figure 7, pour déterminer les expressions logiques de Q0

+ et Q1+.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 149

Page 150: Sylvain tisserant architecture et technologie des ordinateurs

R1 C_max00 01 11 10

00

01

11

10

0Q Q1 0

1

1

X

1

X

1

1

X

1

1

1

X

X X

R1 C_max00 01 11 10

00

01

11

10

0Q Q1 0

1

1

X 1

1

1

1

X

X X

X X

Q1+ Q0

+

Figure 7

Nous devons synchroniser l’automate sur un signal externe d’horloge H. Ainsi nous pouvons

utiliser des bascules, par exemple D, pour réaliser les variables d’état. Dans ce cas nous aurons Q+ = D. Donc :

++=

++=

001

00100

1RQmax_CD

Q1RQQmax_CD

Dans cette première phase de notre étude nous avons oublié qu’un signal extérieur, que

nous notons Start, est nécessaire pour lancer l’opération. Ce signal ne doit avoir d’effet (par exemple dans l’état Start = 1) que lorsque l’automate de contrôle est dans l’état "Opération terminée". Il doit alors le faire passer dans l’état "Initialisation". Une façon simple de tenir compte de cette contrainte est de construire les fonctions D0 et D1 en utilisant la variable Start • FIN. La table 4 et les tableaux de Karnaugh de la figure 7 restent valables lorsque Start • FIN = 0. Lorsque Start • FIN = 1, l’automate est nécessairement dans l’état Q0 = Q1 = 1 (pour avoir FIN = 1) et doit passer dans l’état Q0 = Q1 = 0. Les tableaux de Karnaugh permettant de déterminer les fonctions D0 et D1 sont alors identiques et correspondent au tableau figure 8. La simplification globale de ces tableaux de Karnaugh nous conduit aux expressions suivantes :

( )( )

++=

++=

001

00100

1RQmax_CFINStartD

Q1RQQmax_CFINStartD

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 150

Page 151: Sylvain tisserant architecture et technologie des ordinateurs

R1 C_max00 01 11 10

00

01

11

10

0Q Q1 0

0 0 0 0

X XX X

X XX X

X XX X

Figure 8

Le logigramme du circuit multiplieur que nous venons de concevoir est représenté sur la figure 9. VII.5 Unité de commande Revenons à l’étude des processeurs. L'unité de commande dirige le fonctionnement de tous les autres éléments de l'unité centrale en leur envoyant des signaux de commande. Les principaux éléments de l'unité de commande sont :

- le compteur ordinal (CO) : registre contenant l'adresse en mémoire où se trouve l'instruction à chercher;

- le registre instruction (RI) qui reçoit l'instruction qui doit être exécutée; - le décodeur qui détermine l'opération à effectuer et les opérandes; - le séquenceur qui génère les signaux de commande aux différents composants; - l'horloge (interne ou externe) qui émet des impulsions permettant la synchronisation de

tous les éléments de l'unité centrale. Une horloge est un système logique, piloté par un oscillateur, qui émet périodiquement une série d'impulsions calibrées. Ces signaux périodiques constituent le cycle de base ou cycle machine. Nous avons déjà vu (dans le premier chapitre) les différentes phases de l'exécution d'une instruction. Un cycle d'instruction peut se décomposer en un cycle de recherche (instruction et opérandes) et un cycle d'exécution. On rencontre parfois le terme de cycle cpu pour indiquer le temps d'exécution de l'instruction la plus courte. N'oublions cependant pas que les performances d'un ordinateur ne dépendent pas de la seule cadence de l'unité centrale. Elles dépendent également des mémoires et des bus, ainsi que de l'architecture, avec par exemple l'utilisation d'antémémoire (mémoire cache) pour anticiper les transferts des instructions et des données.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 151

Page 152: Sylvain tisserant architecture et technologie des ordinateurs

Additionneur n bits

n bits

2n bits

2n

2n

2n

n

n bitsn bits

n

Com

pteur

R0

R1

AC

C

M0

M1

HStart

INIT

W_A

CC

ITER

FIN

DQQ

Clk

DQQ

Clk

C_m

ax R1

0

01

Résultat

Figure 9

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 152

Page 153: Sylvain tisserant architecture et technologie des ordinateurs

VII.6 Technologie des circuits intégrés et horloge L'oscillateur fournissant le signal d'horloge peut être intégré sur la puce silicium du processeur. Ce n'est généralement pas le cas, pour au moins deux raisons. Tout d'abord, la fréquence d'oscillation est sensible à la température. Or la température d'un processeur peut varier en fonction de son utilisation. Il serait possible d'observer une dérive fatale, la fréquence augmentant avec la température et la température augmentant avec la vitesse de fonctionnement. Cela poserait également des problèmes de synchronisation avec les composants externes au CPU. Par ailleurs en embarquant une horloge dans la puce du processeur la fréquence de celui-ci serait figée par construction. Or les galettes de silicium ne sont jamais parfaitement homogènes. Les performances peuvent varier selon les zones. Le constructeur serait alors obligé d'ajuster la fréquence de l'oscillateur au plus bas, en prenant un facteur de sécurité. Alors qu'actuellement, les processeurs sont triés et vendus à un prix variant selon leur vitesse de fonctionnement. On préfère donc un oscillateur interne synchronisé sur un signal d'horloge externe, souvent fourni par un oscillateur à quartz. Nous étudierons un peu plus loin ce système de synchronisation, basé sur une boucle à verrouillage de phase, dont les applications sont nombreuses dans les ordinateurs : horloge CPU, enregistrement et lecture de données sur disque dur ou disque optique, transmission de données, etc. Mais commençons par résumer succinctement le processus de fabrication des circuits intégrés et des processeurs en particulier.

VII.6.a Fabrication d’un circuit intégré

L’électronique repose sur l’emploi de semi-conducteurs tels que le silicium (Si) ou le germanium (Ge). Ces deux éléments appartiennent à la même colonne de la classification périodique que le carbone. Ils possèdent donc quatre électrons de valence et ont une structure cristalline analogue à celle du diamant : chaque atome échange quatre liaisons covalentes avec quatre atomes placés aux sommets d’un tétraèdre régulier. La figure 10 donne une représentation symbolique en deux dimensions d’un cristal pur. A la température ambiante quelques liaisons covalentes peuvent être brisées libérant chacune un électron qui peut participer à la conduction. D’autre part, l’absence d’un électron dans une liaison covalente constitue un trou. Les trous contribuent également à la conduction. Qualitativement le mécanisme de déplacement d’un trou est le suivant : lorsqu’un trou existe, il est assez facile pour un électron de valence voisin de quitter son orbitale pour venir combler le trou. L’électron laisse un trou au niveau de l’atome qu’il a quitté. Ce trou peut à nouveau être comblé par un autre électron et ainsi de suite. Le mouvement apparent de ce trou est équivalent au déplacement d’un charge positive. La conduction sous ces deux types de porteurs (électrons et trous) nécessite la continuité du réseau cristallin. Les circuits sont réalisés à partir d’un monocristal.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 153

Page 154: Sylvain tisserant architecture et technologie des ordinateurs

trou

électron libre

Figure 10

Dans un cristal pur (intrinsèque) les densités de porteurs sont trop faibles. Il est nécessaire d’introduire, sans perturber la structure du réseau cristallin, des dopants : des impuretés d’atomes trivalents ou pentavalents. L’introduction d’une impureté de valence cinq (antimoine, phosphore ou arsenic) apporte un électron en excès très faiblement lié qui contribue facilement à la conduction. Ces impuretés de type n sont appelés donneurs. Inversement l’introduction d’impuretés de valence trois (bore, gallium ou indium), dites accepteurs, produit des semi-conducteurs de type p pour lesquels les porteurs majoritaires sont des trous.

trou

électron supplémentaire

Impureté pentavalente Impureté trivalente

Figure 11

Les portes logiques sont réalisées à partir de transistors qui sont obtenus en combinant des zones comportant différents dopants. La figure 12 présente par exemple un transistor MOS (Métal – Oxyde - Silicium) de type n. Un tel transistor peut être utilisé comme un interrupteur commandé. Si la grille G est soumise à une tension positive elle attire des électrons qui comblent les trous du semi-conducteur de type p puis provoquent une inversion de population et créent un canal n induit. La conduction est alors possible entre la source S et le drain D. Un circuit intégré

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 154

Page 155: Sylvain tisserant architecture et technologie des ordinateurs

est constitué d’un très grand nombre de transistors réalisés en dopant des zones très précises et interconnectés.

n np

S DG

n np

S DG

SiO2

+

canal n induit

Figure 12

La fabrication des circuits intégrés commence par la production d’un monocristal sans défaut ultra pur. Ce lingot est obtenu à partir d’un germe plongé dans un bain de silicium fondu maintenu à une température très proche du point de fusion (1400 °C) sous une atmosphère d’argon. Le germe tourne régulièrement pendant qu’il est remonté lentement. On obtient ainsi un cylindre de 6 ou 8 pouces de diamètre. Dans quelque temps on devrait atteindre 12 et 16 pouces. Le lingot est ensuite découpé en très fines tranches ou galettes (environ 500-600 µm d'épaisseur). Ces galettes sont ensuite polies mécaniquement et chimiquement.

Figure 13

Pour réaliser les transistors, les résistances, les condensateurs et les connexions il faut doper certaines zones avec des impuretés de type donneur ou accepteur et avec différentes

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 155

Page 156: Sylvain tisserant architecture et technologie des ordinateurs

concentrations. Pour cela on procède par couches superposées. Différentes techniques sont utilisées pour déposer, faire croître ou diffuser ces implants. Certaines couches doivent être séparées par une couche de dioxyde de silicium pour isolation (1500 Å) ou protégées (passivation : 200-500 Å). Cette couche d’oxyde est obtenue par exposition de la galette à une atmosphère d’oxygène et d’hydrogène de haute pureté à environ 1000 °C.

Dans tous les cas il faut délimiter en surface les zones à traiter. Pour cela on utilise un

masque gravé sur un réticule. L'image, à l’échelle 5 à 10, est tracée au laser dans une fine couche de chrome déposée sur une plaquette de quartz. Par ailleurs, la galette est recouverte d'une pellicule de résine photorésistive, dont il existe deux types : négative ou positive. Au moyen d’un système optique sophistiqué le masque et la galette sont exposés à un rayonnement laser ultraviolet. La résine (positive) exposée subit une transformation chimique et devient acide. Puis un révélateur basique retire la résine exposée. Le traitement (attaque chimique, dopage par bombardement ionique, dépôt métallique ou épitaxie) peut alors être réalisé, puis le reste de la résine est retiré à l'aide d'un solvant. On répète ces opérations quelques dizaines de fois, entre chaque étape la galette est rincée à l’eau ultra pure.

Les procédures de gravure des masques et d’insolation gouvernent la finesse du dessin des

composants. Actuellement les constructeurs travaillent un pas de 0.13 µm. Il semble cependant qu'on approche des limites technologiques de la gravure. La finesse du tracé de la gravure est principalement limitée par la longueur d'onde de la source lumineuse utilisée pour l'insolation. Il faut en particulier limiter les phénomènes de diffraction. Les rayons X ou les électrons pourraient être employés dans un avenir proche. On prévoit un pas de 22 nm vers 2015. Au-delà la nanoélectronique est encore du domaine du laboratoire.

Sur une galette on réalise un grand nombre de circuits. Ceux-ci sont tous testés et marqués avant que la galette ne soit découpée en plaquettes avec une scie au diamant. Chaque plaquette est ensuite placée sur un support et les connexions avec les contacts extérieurs sont réalisés par des fils d'aluminium ou d'or de 30 µm de diamètre, ou à l’aide de micro-billes de soudure. L'ensemble est ensuite enfermé dans un boîtier en plastique ou en céramique.

VII.6.b Boucle à verrouillage de phase Nous ne présentons ici que le principe, très schématisé, du fonctionnement d'une boucle à verrouillage de phase (PLL : Phase Locked Loop). La structure minimale consiste en une boucle de rétroaction contenant :

- un comparateur de phase; - un oscillateur commandé en tension.

On trouve de nombreuses utilisations des PLL dans les ordinateurs : horloge CPU, enregistrement et lecture de données sur disque dur ou disque optique, transmission de données, etc. Le comparateur de phase est un circuit fournissant une tension dont la valeur dépend de la différence de phase entre deux signaux périodiques. Nous illustrons notre analyse en supposant

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 156

Page 157: Sylvain tisserant architecture et technologie des ordinateurs

les signaux sinusoïdaux. Mais cela ne retire rien à la généralité de l'étude puisque tout signal périodique, comme un signal d’horloge, peut être décomposé en une série de Fourier :

[ ][ ]

ϕ=

ϕ=

)t(cosS)t(s

)t(cosS)t(s

222

111

Comparateurde phase

Oscillateurcommandéen tension

u(t)s (t)2

s (t)1

Figure 14 Donc par définition, la tension à la sortie du comparateur de phase peut se mettre sous la forme :

[ ] [ ])t(fSS)t()t(fSS)t(u 212121 ϕ∆=ϕ−ϕ= où f est une fonction de période 2 π. Nous supposons que les amplitudes S1 et S2 sont constantes. Pour simplifier les notations, en nous limitant aux termes importants, nous prenons S1 = S2 = 1, ce qui nous donne :

[ ])t(f)t(u ϕ∆= Cette tension est utilisée pour commander l'oscillateur. L'oscillateur commandé en tension (VCO : Voltage Controlled Oscillator) délivre un signal, ici sinusoïdal, dont la pulsation instantanée est une fonction linéaire de la tension de commande. C'est-à-dire :

)t(ukdt

)t(d)t( 0

22 ω+ω=

ϕ=ω

ω0 est la pulsation de repos du VCO;

kω est la sensibilité du VCO. Si nous explicitons la tension de commande fournie par le comparateur de phase dans cette expression il vient :

[ ])t(fkdt

)t(d)t( 0

22 ϕ∆+ω=

ϕ=ω ω

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 157

Page 158: Sylvain tisserant architecture et technologie des ordinateurs

Dérivons cette expression par rapport au temps :

dt)t(d

dfdk

dt)t(d

22

2 ϕ∆ϕ∆

ω

Nous notons kϕ la sensibilité du comparateur de phase, définie par :

[ ])t(d

)t(ud)t(d

fdkϕ∆

=ϕ∆ϕ∆

L'équation différentielle peut alors s'écrire :

ϕ−

ϕ=

ϕϕω dt

)t(ddt

)t(dkk

dt)t(d 21

22

2

Soit :

dt)t(d

kkdt

)t(dkk

dt)t(d 12

22

2 ϕ=

ϕ+

ϕϕωϕω

La solution de cette équation différentielle peut se mettre sous la forme d'une somme de deux termes :

- le régime transitoire : solution générale de l'équation sans second membre; - le régime permanent : solution particulière de l'équation complète.

Si nous avons pour le signal s1 une pulsation constante :

0111 t)t( ϕ+ω=ϕ

nous pouvons essayer une solution particulière telle que :

0dt

)t(d22

2

Il vient alors :

dt)t(d

dt)t(d 12 ϕ=

ϕ

C'est-à-dire que les deux phases sont égales à une constante additive près :

θ+ϕ+ω=θ+ϕ=ϕ 01112 t)t()t(

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 158

Page 159: Sylvain tisserant architecture et technologie des ordinateurs

La pulsation du signal en sortie du VCO est donc égale à celle du signal s1 et le déphasage entre les deux signaux est fixe :

θ=ϕ−ϕ=ϕ−ϕ=ϕ∆ω=ω

02

0121

012

)t()t(

Ainsi, après une phase transitoire, la boucle s'accroche ou se verrouille. Le déphase entre les deux signaux est tel que la tension de commande permet d'obtenir une pulsation identique à celle du signal de référence.

ωω

ω−ω=ϕ∆⇒ω=ϕ∆+ω=ω

k)(f)(fk 100

10

02

Ce qui nous donne pour le déphasage :

ω−ω=ϕ∆

ω

kf 1010

Nous avons simplifié la résolution de l'équation différentielle en supposant la sensibilité du comparateur kϕ constante. Si ce n'est pas le cas, cela ne change rien au régime permanent. Par contre cela peut influer sur le régime transitoire et en particulier sur les conditions d'accrochage de la boucle.

VII.6.c Multiplicateur de fréquence Cependant la transmission d'un signal d'horloge de très haute fréquence pose de nombreux problèmes techniques. Pour ne pas limiter la fréquence de fonctionnement de l'unité centrale à celle de ce signal externe on utilise un multiplicateur de fréquence.

Comparateurde phase

Oscillateurcommandéen tension

u(t)s (t)2

s (t)1

Diviseur defréquence

Figure 15

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 159

Page 160: Sylvain tisserant architecture et technologie des ordinateurs

Il s'agit en fait d'un diviseur de fréquence, par exemple un compteur, placé dans la contre-réaction de la boucle à verrouillage de phase. Si celui-ci divise la fréquence ω2 par n. La boucle est donc verrouillée si :

12

2 n' ω=

ω=ω

C'est-à-dire que l'oscillateur commandé émet un signal avec une fréquence n fois celle du signal de référence. Ce coefficient de multiplication n est chargé dans l'unité centrale lorsque celle-ci est initialisée.

VII.6.d Fréquence d'horloge, gravure et puissance dissipée

L'augmentation de la fréquence d'un processeur pose quelques problèmes techniques, en particulier au niveau de la puissance thermique dissipée et des perturbations électromagnétiques. Plus un circuit fonctionne rapidement, plus les intensités des courants, et donc la puissance consommée, sont élevées. Une façon de réduire cet inconvénient consiste à utiliser une tension d'alimentation plus faible, par exemple 3.3 V au lieu de 5 V. Par ailleurs plus les signaux sont rapides plus ils induisent, par couplage capacitif, des parasites dans leur voisinage. En baissant la tension on diminue l'amplitude de ces parasites, mais on augmente la sensibilité du circuit aux parasites externes. L'augmentation de la densité d'intégration fournit également des réponses à ces difficultés. La réduction du pas de la gravure présente de nombreux avantages. Cela permet évidemment de diminuer la surface de silicium utilisée, un gain d'un facteur 2 sur la gravure réduit la surface par 4. Il est alors possible :

- soit d'augmenter les fonctionnalités pour une même surface de silicium; - soit de diminuer la surface de silicium, donc le coût, à fonctionnalités constantes.

Par ailleurs, cela permet une diminution du temps de transit des signaux et une diminution des intensités, donc une réduction de la puissance dissipée. Ces deux derniers avantages permettent donc augmenter la vitesse de fonctionnement. Par contre, la diminution de la surface de silicium rend l'évacuation de la chaleur plus difficile. Il faut faire appel à de la graisse ou de la pâte thermique pour assurer une bonne conduction entre la puce et le ventilateur, ou encore utiliser un refroidissement par plaque à effet Peltier. VII.7 Séquenceur Le séquenceur est un automate distribuant, selon un chronogramme précis, des signaux de commande aux diverses unités participant à l'exécution d'une instruction. Il peut être câblé ou microprogrammé.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 160

Page 161: Sylvain tisserant architecture et technologie des ordinateurs

Un séquenceur câblé est un circuit séquentiel complexe comprenant un sous-circuit pour chacune des instructions à commander. Ce sous-circuit est activé par le décodeur. L'idée de la microprogrammation a été introduite par Maurice Wilkes en 1951. Il est en effet toujours possible de remplacer un circuit logique par un transcodeur ou une ROM. Considérons un ensemble de n fonctions logiques dépendant de m variables logiques. Les valeurs de ces fonctions pour les N = 2m combinaisons possibles peuvent être calculées (table de vérité) et mémorisées sous forme de N mots de n bits. Ensuite en utilisant les m variables sous forme d'une adresse il est possible de restituer le résultat recherché.

De même pour reproduire une séquence d'opérations élémentaires il suffit d'un mot par "tranche" de temps. Cette série de mots constitue un microprogramme. Le code opération de l'instruction à exécuter peut être utilisé pour définir le pointeur sur la première micro-instruction du microprogramme. En fonction du code opération le contenu d'un compteur est initialisé, puis celui-ci s'incrémente ensuite à chaque cycle d'horloge. La période de l'horloge utilisée à ce niveau peut être plus élevée que celle qui règle la cadence des autres éléments de l'unité centrale. Ce compteur sert à adresser une mémoire morte. La figure suivante illustre ce principe :

code op. RI

ROM :pointeur

ROMmicroprogramme

0 0 0 0 01 11

signaux de commande

micro-instruction

compteur horloge

Figure 16 Le format des micro-instructions varie selon les machines. Le schéma de la figure 16 correspond à celui proposé initialement par Wilkes avec des micro-instructions longues où chaque bit correspond à une ligne de commande. On parle alors de microprogrammation horizontale. A l'extrême une autre solution consiste à utiliser des micro-instructions compactes nécessitant un décodage avant la génération des signaux de commande. La microprogrammation

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 161

Page 162: Sylvain tisserant architecture et technologie des ordinateurs

est alors dite verticale. En microprogrammation horizontale la mémoire de commande comprend peu de micro-instructions, chacune comptant un grand nombre de bits. En microprogrammation verticale la longueur des micro-instructions est plus courte mais il y a un plus grand nombre de micro-instructions et il faut un décodage supplémentaire. Dans la pratique on rencontre des micro-instructions mixtes pour lesquelles certains bits agissent directement sur les lignes de commande associées alors que d'autres champs nécessitent un décodage. Un microprogramme peut également contenir des boucles, des tests et des ruptures de séquence. Le compteur est alors remplacé par un micro-séquenceur.

Intrinsèquement un séquenceur microprogrammé est plus lent qu'un séquenceur câblé. L'avantage et les gains en performance d'un séquenceur microprogrammé résident dans la simplicité de sa conception et la souplesse de son utilisation. Il est ainsi possible d'offrir un jeu d'instructions très complexes. Une instruction peut donc être équivalente à plusieurs instructions d'une autre machine. On gagne alors sur le temps de transfert des instructions. Par ailleurs cela permet une plus grande souplesse aux compilateurs de haut niveau pour optimiser le code objet. Il est également possible d'augmenter le nombre d'instructions sans augmenter la complexité, donc le coût, du processeur. Nous avons ici un premier exemple de l'imbrication du matériel et du logiciel dans la conception d'une architecture.

Langages évolués

Assembleur

Instructions machine

Microinstructions

Commandesélectriques

Figure 17

Pour programmer un ordinateur on utilise généralement des langages dits évolués ou de haut niveau : C, C++, Java, Basic, Fortran, Pascal, Ada, Assembleur, etc. Cependant l'unité centrale ne peut exploiter que les instructions machine : les codes binaires qui sont chargés dans le registre instruction. Le terme de langage désigne un jeu d'instructions et de règles syntaxiques. A l'aide d'un langage évolué le programmeur écrit un code source. Celui-ci n'est pas directement exécutable par l'ordinateur. Il faut le traduire en code machine ou code objet. C'est le rôle des compilateurs ou assembleurs et des interpréteurs. Un interpréteur ne produit pas de code objet il traduit les instructions directement au fur et à mesure de l'exécution du programme.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 162

Page 163: Sylvain tisserant architecture et technologie des ordinateurs

La figure 17 schématise les différents niveaux de programmation. Lorsque l'utilisateur peut accéder au niveau de la micro-programmation la machine est dite micro-programmable. VII.8 Registres de l'unité centrale Le nombre et le type des registres implantés dans une unité centrale font partie de son architecture et ont une influence importante sur la programmation et les performances de la machine. Nous voudrions ici passer en revue les registres fondamentaux, que l'on retrouve sur toutes les machines ou presque. Compteur ordinal (CO) : Ce registre (Program Counter : PC) contient l'adresse de la prochaine instruction à exécuter. Après chaque utilisation il est automatiquement incrémenté du nombre de mots correspondant à la longueur de l'instruction traitée : le programme est exécuté en séquence. En cas de rupture de séquence (branchement conditionnel ou non, appel à une routine, etc.) il est chargé avec la nouvelle adresse. Le compteur ordinal, dont la taille dépend de l'espace adressable, n'est généralement pas accessible directement au programmeur. Registre instruction (RI) : C'est le registre de destination dans lequel le CPU transfert l'instruction suivante à partir de la mémoire. Sa taille dépend du format des instructions machines. Le décodeur utilise le registre instruction pour identifier l'action (ou le micro-programme) à entreprendre ainsi que les adresses des opérandes, de destination ou de saut. Le programmeur n'a pas accès au registre instruction. Accumulateur (ACC) : L'accumulateur est un registre de l'unité arithmétique et logique. Il a de nombreuses fonctions. Il peut contenir un des deux opérandes avant l'exécution et recevoir le résultat après. Cela permet d'enchaîner des opérations. Il peut servir de registre tampon pour les opérations d'entrées/sorties : dans certaines machines c'est le seul registre par lequel on peut échanger des données directement avec la mémoire. Sa taille est égale à la longueur des mots en mémoire. Il possède souvent une extension (Q), pour les multiplications, décalages, divisions, etc. Le registre ACC est accessible au programmeur et très sollicité. Certaines machines possèdent plusieurs accumulateurs. Registres généraux ou banalisés : Ils permettent de limiter les accès à la mémoire, ce qui accélère l'exécution d'un programme. Ils peuvent conserver des informations utilisées fréquemment, des résultats intermédiaires, etc. Ils sont accessibles au programmeur. Registres d'indice ou d'index : (XR) Ils peuvent être utilisés comme des registres généraux mais ils ont une fonction spéciale utilisée pour l'adressage indexé. Dans ce cas l'adresse effective d'un opérande est obtenue en ajoutant le contenu du registre d'index à l'adresse contenue dans l'instruction. Ce type d'adressage et de registre est très utile pour manipuler des tableaux. Le programmeur dispose alors d'instructions permettant l'incrémentation ou la décrémentation du registre d'index. En particulier les registres d'index peuvent être incrémentés ou décrémentés automatiquement après chaque utilisation. Dans certaines machines ces instructions sont applicables à tous les registres généraux, il n'y a alors pas de registre d'index spécifique.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 163

Page 164: Sylvain tisserant architecture et technologie des ordinateurs

Registre de base : A de très rares exceptions à l'intérieur d'un programme on ne fait référence qu'à des adresses relatives ou virtuelles. Par contre l'unité centrale a besoin de connaître les adresses physiques où se situent réellement instructions et données. Celles-ci dépendent de l'endroit où a été chargé le programme en mémoire, l'espace physique occupé par un programme pouvant ne pas être contigu. Le rôle des registres de base est de permettre le calcul des adresses effectives. Un registre de base contient une adresse de référence, par exemple l'adresse physique correspondant à l'adresse virtuelle 0. L'adresse physique est obtenue en ajoutant au champ adresse de l'instruction le contenu du registre de base. Le registre de base est encore utilisé quand le nombre de bits du champ adresse ne permet pas d'accéder à toute la mémoire. Registre d'état (RE ou PSW : Program Status Word) : Une partie des bits de ce registre, aussi appelé registre condition, constitue des drapeaux (flags) qui indiquent certains états particuliers. Par exemple à la fin de chaque opération on peut y trouver le signe du résultat (Négatif, Zéro ou Positif), ainsi qu'une éventuelle retenue (Carry) ou un dépassement de capacité (Overflow). Ces bits indicateurs peuvent être testés pour déterminer la suite du déroulement du programme : branchements conditionnels. On trouve également le mode de fonctionnement de l'unité centrale. Deux modes sont possibles le mode utilisateur et le mode système ou superviseur. Dans le mode utilisateur certaines instructions sont interdites : elles provoquent un déroutement vers le système d'exploitation. Un bit peut également indiquer un déroulement pas à pas : demande de trace (T). Le registre peut aussi contenir le niveau de l'interruption en cours de traitement ou un masque des niveaux d'interruptions autorisés. Registre pointeur de pile (PP) : Une pile est une zone mémoire dans laquelle les informations sont rangées de façon contiguë. L’usage d’une pile permet la récursivité des appels à des routines ou fonctions. Elle sert à sauvegarder l’adresse de retour, les registres qui sont utilisés par la fonction appelée. Elle peut également servir au passage direct ou indirect des arguments. Le pointeur de pile (Stack Pointer : SP) indique le sommet de la pile : la position de la dernière information enregistrée. Dans certaines machines le pointeur de pile indique la position où sera mémorisée la prochaine donnée. Le fonctionnement d'une pile est du type Dernier Entré Premier Sorti (LIFO : Last In First Out). Les deux principales opérations liées à la pile concernent l'ajout d'un élément dans la pile ou le retrait, souvent nommées respectivement PUSH et PULL. Lorsqu'une donnée est enregistrée dans la pile elle est placée à l'adresse qui suit celle du dernier mot stocké. Après l'opération le pointeur de pile est incrémenté. Lorsque un mot est retiré de la pile il correspond à la dernière information qui y a été entrée. Après l'opération le pointeur est décrémenté. Une pile est réservée à l'usage de l'unité centrale, en particulier pour sauvegarder les registres et l'adresse de retour en cas d'interruption ou lors de l'appel d'une procédure. Le pointeur de pile est accessible au programmeur, ce qui est souvent source d'erreur. Certaines machines sont dotées de plusieurs pointeurs de piles. Pour améliorer les performances d'un processeur il faut disposer du plus grand nombre de registres possible. On réduit ainsi les accès à la mémoire. De plus, il est préférable d'éviter de les spécialiser. On évite ainsi des transferts entre registres, par exemple pour calculer la valeur d'un indice et utiliser ensuite cet indice pour modifier une case d'un tableau.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 164

Page 165: Sylvain tisserant architecture et technologie des ordinateurs

VII.9 Structures des instructions au niveau machine

VII.9.a Format des instructions Les ordinateurs sont capables d'effectuer un certain nombre d'opérations élémentaires. Une instruction au niveau machine doit fournir à l'unité centrale toutes les informations nécessaires pour déclencher une telle opération élémentaire : type d'action, où trouver le ou les opérandes, où ranger le résultat, etc. C'est pourquoi une instruction comporte en général plusieurs champs ou groupes de bits. Le premier champ contient le code opération. Les autres champs peuvent comporter des données ou l'identification des opérandes. La figure 18 donne quelques exemples d'instructions à n adresses, pour n = 0, 1 et 2. Sur certaines machines les instructions sont toutes de même longueur, sur d'autres cette longueur peut varier avec le code opération ou le mode d'adressage. On distingue six groupes d'instructions :

- transferts de données : de mémoire à registre, de registre à registre, de registre à mémoire; - opérations arithmétiques : addition, soustraction, multiplication et division; - opérations logiques : ET, OU inclusif, NON, OU exclusif, etc.; - contrôle de séquence : branchements conditionnels ou non, appel de procédure, etc.; - entrées/sorties; - manipulations diverses : décalage, conversion de format, permutation circulaire des bits,

échange d'octets, incrémentation, etc.

code opération

adressecode opération

adresse 2code opération adresse 1 instruction dyadique

instruction nonadique

Figure 18 Le choix de la longueur et du format des instructions est une étape très importante dans la conception d'une nouvelle architecture. C'est encore une affaire de compromis. La longueur des instructions se répercute sur la dimension de la mémoire centrale donc sur le coût : il faut deux fois plus de bits pour stocker un programme de n instructions de 32 bits qu'un programme de n instructions de 16 bits. La longueur des instructions par rapport à celle du mot mémoire influence également le temps de traitement : il faut tenir compte du temps de transfert des mots qui constituent une instruction. Ce choix dépend des vitesses relatives d'accès mémoire et de traitement effectif par l'unité centrale. Le temps de recherche doit être minimisé pour les processeurs très rapides. La largeur en bits de chacun des différents champs est également importante, en particulier pour le code opération. Le nombre de bits est déterminé par le nombre d'opérations

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 165

Page 166: Sylvain tisserant architecture et technologie des ordinateurs

distinctes envisagées : n bits autorisent 2n instructions. Cependant toutes les opérations ne nécessitent pas forcément le même nombre de champs ou des champs de même longueur. Ainsi sur une machine même pour une longueur d'instruction donnée le format des instructions peut ne pas être fixe. Il peut dépendre du type d'opération. Pour illustrer le concept du code opération expansif imaginons des instructions de 16 bits découpées en quatre champs de 4 bits (fig. 19). Avec ce format nous pouvons définir 16 instructions à 3 adresses. C'est peu et toutes les instructions ne nécessitent pas trois adresses. Nous pouvons également définir 15 instructions à 3 adresses (code opération 0000 à 1110 dans le premier champ), 14 instructions à 2 adresses (code opération sur 8 bits 1111 0000 à 1111 1101 identifié par les quatre premiers bits à 1), 31 instructions à 1 adresse (code opération sur 12 bits 1111 1110 0000 à 1111 1111 1110 identifié par les sept premiers bits à 1) et 16 instructions sans champ adresse (identifiée par les douze premiers bits à 1). Soit un total de 76 instructions. Dans d'autres variantes la longueur et le format des instructions sont définis par les premiers bits du code. D'autre part comme la capacité mémoire ne cesse de croître les champs d'adresse demandent de plus en plus de bits. C'est pourquoi, pour éviter une inflation de certains registres comme le registre instruction, aujourd'hui on préfère les instructions à une adresse. On peut par exemple faire en sorte qu'un des opérandes soit toujours l'accumulateur et que ce même registre recueille le résultat.

Ad

Ad 1 Ad 2 Ad 3

Ad

15 instructions

31 instructions

14 instructions

16 instructions

0 0 00

1 0 11

1 1 11

1 1 11

1 1 11

1 1 11

1 1 11

1 1 11

Ad 1 Ad 2 Ad 3

0 0 00

1 1 01

Ad 1 Ad 2

Ad 1 Ad 2

1 1 01

1 1 11

1 1 11

1 1 11

1 1 11

1 1 11

0 0 00

1 1 01

0 0 00

1 1 11

Figure 19

VII.9.b Modes d'adressage Un champ adresse peut permettre de référencer un registre ou un mot en mémoire. Il peut contenir le numéro du registre ou l'adresse effective du mot mais ce ne sont pas les seules

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 166

Page 167: Sylvain tisserant architecture et technologie des ordinateurs

manières d'identifier un opérande. Pour faciliter la programmation il existe de nombreux modes d'adressage. Le mode est défini soit par le code opération lorsque celui-ci impose un type déterminé, soit par un code faisant partie du champ adresse.

adressecode opération mode

champ adresse

adressemode

champ adresse

Figure 20

Les exemples ci-dessous sont empruntés aux instructions de l'assembleur PDP-11. Adressage implicite : Le code opération identifie automatiquement l'opérande, l'instruction ne peut porter que sur un registre particulier. Par exemple, le test sur le signe du résultat d'une opération arithmétique concerne le registre d'état RE. Dans certaines architectures les transferts avec la mémoire ne se font qu’à partir ou à destination du registre d’accumulation. Dans ces cas aucun champ adresse n'est nécessaire. Adressage immédiat : La valeur de l'opérande est contenue dans le champ adresse si le nombre de bits dans ce champ est suffisant, sinon dans le mot suivant l'instruction. MOV #100, R1 Après cette instruction le registre R1 contient la valeur 100. Adressage registre : Le champ adresse contient le numéro du registre opérande. CLR R3 Après cette instruction le contenu de R3 est nul. Adressage direct : Le champ adresse de l'instruction (ou le mot suivant si le nombre de bits n'est pas suffisant) contient l'adresse effective de l'opérande. 100 : 250 MOV 100, R2 Après cette instruction le registre R2 contient le mot qui se situe à l'adresse 100 en mémoire, c'est-à-dire 250. Adressage indirect : Le champ adresse (ou le mot suivant) contient l'adresse d'un pointeur : mot en mémoire qui contient l'adresse effective de l'opérande.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 167

Page 168: Sylvain tisserant architecture et technologie des ordinateurs

MOV (R1), R4 Après cette instruction R4 contient la valeur du mot dont l'adresse est contenue dans R1. Comme R1 vaut 100 on trouve 250 dans R4. Adressage indexé : Ce mode d'adressage est très utile lorsqu'on travaille, par exemple, sur des tableaux. Considérons un bloc de n mots consécutifs débutant à l'adresse A. Le kième mot se trouve à l'adresse A + (k − 1). Pour référencer ce mot il est possible d'utiliser un registre d'index. L'adresse effective est calculée en additionnant le contenu de ce registre d'index à l'adresse qui se trouve dans le champ adresse de l'instruction. Sur certaines machines tous les registres généraux peuvent être utilisés comme registres d'index. La présence d'un registre d'index s'accompagne généralement de la possibilité d'incrémentation et décrémentation automatiques. MOV R4, 100(R3)+ CLR 100(R3) Avant la première opération R3 est nul, donc le contenu de R4 est transféré à l'adresse 100. Après le registre R3 est incrémenté. L'instruction suivante permet de mettre à zéro le contenu du mot à l'adresse suivante. Adressage basé : L'adressage basé est comparable à l'adressage indexé mais cette fois l'adresse effective est obtenue en additionnant le contenu du registre de base au contenu du champ adresse de l'instruction. Ce mode d'adressage est utilisé par exemple en cas d'allocation dynamique de la mémoire : la position du programme en mémoire peut changer en fonction de la charge du système et il n'occupe pas toujours un espace contigu. Cette technique permet également de réduire le nombre de bits dans le champ adresse : le registre de base contient la première adresse d'un bloc de 2k mots et l'adresse (sur k bits) contenue dans l'instruction représente le déplacement à l'intérieur du bloc. Adressage relatif : L'adresse effective est obtenue est additionnant le contenu du compteur ordinal au contenu du champ adresse de l'instruction. Ce type d'adressage est utilisé par exemple dans des instructions de branchement. N'oublions pas que le calcul de l'adresse effective peut nécessiter quelques opérations (addition par exemple). L'utilisation de certains modes d'adressage sophistiqués (le 68020 de Motorola dispose par exemple d'une cinquantaine de modes d'adressage) peut donc augmenter le temps de traitement d'une instruction. VII.10 Réalisation d’un multiplieur micro-programmé

Reprenons le multiplieur que nous avons étudié plus haut (§ VII.4). Il est basé sur une unité d’exécution et une unité de commande câblée. Nous voulons conserver l’unité d’exécution constituée de trois registres R0, R1 et ACC, un additionneur et un compteur. Le fonctionnement de cette unité est contrôlé par quatre signaux INIT, W_ACC, ITER et FIN, qui dépendent de deux signaux d’information R10 et C_max. Nous voulons remplacer l’automate de contrôle-commande par l’équivalent d’un séquenceur micro-programmé. Pour cela nous traduisons l’organigramme

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 168

Page 169: Sylvain tisserant architecture et technologie des ordinateurs

de la figure 6 en un micro-programme en pseudo-langage. L’exemple suivant se comprend aisément :

INIT BOUCLE SI NON(R10) SUITE ADD SUITE ITER SI NON(C_max) BOUCLE STOP

Nous n’avons ici que deux types d’instructions : des actions et un branchement conditionnel. Il suffit donc d’un bit pour identifier ce type, choisissons 0 pour les actions et 1 pour le branchement conditionnel. Nous avons quatre actions (INIT, ADD, ITER et STOP) il nous faut donc deux bits pour les identifier. Ces instructions s’adressent implicitement à des éléments fonctionnels, nous n’avons donc pas besoin de champ supplémentaire. Pour un branchement conditionnel il faut identifier la condition et l’adresse de saut. Il y a deux tests différents un bit est donc suffisant. Le micro-programme compte six instructions, il faut donc trois bits d’adresse. La longueur minimale d’une micro-instruction est donc cinq bit. Nous choisissons le format suivant, qui dépend du bit le plus significatif (bit 4) indiquant le type d’instruction. Action :

- bit 4 : 0 - bits 3 et 2 : 00 INIT

01 ADD 10 ITER 11 STOP

- bits 0 et 1 : 00 (inutilisés) Branchement conditionnel :

- bit 4 : 1 - bit 3 : 0 test sur R10

101 test sur C_max - bits 0 à 2 : adresse de saut

Nous pouvons traduire le micro-programme en binaire en utilisant cette convention :

adresse code 101 00000 101 10011 101 00100 101 01000 101 11001 101 01100

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 169

Page 170: Sylvain tisserant architecture et technologie des ordinateurs

Nous devons concevoir le circuit de commande destiné à exploiter ce micro-programme.

Nous avons besoin d’une mémoire d’au moins 6 mots de 5 bits, d’un compteur pour adresser cette mémoire et d’un registre de 5 bits pour contenir la micro-instruction courante. Il nous faut un transcodeur pour produire les signaux de commande à partir des deux bits du champ action. Pour cela il est possible d’utiliser un démultiplexeur (fig. 21).

INIT

W_ACC

FIN

ITER

R10

C_max

MED

UX

registre micro-instruction

Mémoire

micro-

programme

Compteur

RAZ

Clk

Chrgt //

H

Start

Condition

Figure 21 Lors d’un test positif le compteur doit être chargé à partir du champ adresse. La commande de chargement parallèle correspond donc à l’expression logique suivante :

ConditionOp//Chrgt =

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 170

Page 171: Sylvain tisserant architecture et technologie des ordinateurs

où Op représente le type d’instruction (bit 4 du registre micro-instruction) et Condition le signal indiquant si la condition du test est réalisée :

033 1Rrmax_CrCondition µ+µ= µr3 est le bit 3 du registre micro-instruction. Dans les autres cas le compteur doit être incrémenter d’une unité. Le comptage doit être bloqué lorsque la multiplication est terminée, pour cela nous pouvons employer le signal fin. Ce qui nous donne :

//ChrgtFIN//ChrgtFINClk +== Le signal extérieur Start de démarrage de la multiplication, si l’opération précédente est terminée, doit faire une remise à zéro du compteur pour relancer le micro-programme à l’instruction INIT. Nous avons simplifié la lecture de la mémoire micro-programme en supposant que l’affichage de l’adresse suffisait à transférer la micro-instruction courante dans le registre. VII.11 Traitement anticipé des instructions : pipeline Nous avons vu que le traitement d'une instruction peut se découper en plusieurs phases. A chacune d'elles il est possible d'associer une unité fonctionnelle. Considérons, pour illustrer notre propos, un microprocesseur disposant de trois unités :

- unité de recherche (R); - unité de décodage (D); - unité d'exécution (E).

dont on suppose qu'elles remplissent leurs fonctions respectives en un cycle d'horloge.

La figure 22 schématise de déroulement d'une instruction. La phase "recherche" mobilise l'unité de recherche pendant un cycle d'horloge. La phase "décodage" occupe l'unité de décodage pendant un deuxième cycle et la phase "exécution" utilise l'unité d'exécution pendant un troisième cycle. Il faut donc trois cycles d'horloge pour traiter une instruction. La prise en compte de l'instruction suivante se fait à partir du 4ème cycle, et ainsi de suite. L'exécution de N instructions requiert donc 3 N cycles d'horloge (fig. 23). Cependant nous constatons alors qu'à chaque cycle d'horloge deux des trois unités fonctionnelles sont inemployées. Il y a moyen d'accélérer les calculs en demandant à l'unité de recherche d'aller chercher l'instruction suivante dès le deuxième cycle d'horloge. Cette instruction est ensuite décodée au cycle suivant, alors que l'unité de recherche continue également. Nous obtenons alors le diagramme schématisé sur la figure 24. Un processeur dans lequel ce traitement anticipé est possible est dit avec pipeline. Le compteur ordinal est incrémenté à chaque cycle d'horloge.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 171

Page 172: Sylvain tisserant architecture et technologie des ordinateurs

Recherche

Décodage

Exécution

unitésfonctionnelles

R

D

E

cyclesd'horloge

1 2 3

Figure 22

Dans un processeur avec pipeline il faut toujours 3 cycles pour exécuter chaque instruction, mais dès qu'une instruction est terminée il suffit d'attendre un cycle pour que la suivante soit terminée, et non trois comme dans le cas précédent. Dans ces conditions il ne faut que N+2 cycles d'horloge pour exécuter N instructions. On calcule presque 3 fois plus vite.

R

D

E

1 2 3

i

i

i

i+1 i+2

i+1

i+1

i+2

i+2

4 5 6 7 8 9

Figure 23 Il n'est cependant pas simple de bénéficier de ce gain de performance en totalité. Les

performances d’un pipeline peuvent être dégradées par des aléas. On distingue trois types d’aléas :

- aléas structurels : deux instructions ont besoin simultanément d’une même ressource ou d’un même bloc fonctionnel ;

- aléas de données : une instruction a besoin du résultat d’une instruction qui n’est pas terminée ;

- aléas de contrôle : rupture de séquence.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 172

Page 173: Sylvain tisserant architecture et technologie des ordinateurs

R

D

E

1 2 3

instr. i instr. i+1 instr. i+2

instr. i instr. i+1 instr. i+2

instr. i instr. i+1 instr. i+2

4 5

Figure 24

Par exemple lors d'une rupture de séquence (branchement conditionnel ou non, fin de boucle, appel de sous-programme, etc.), il faut gérer les instructions dont le traitement a été anticipé. Il existe généralement deux types de branchements : simple ou retardé. Pour un branchement simple le traitement anticipé est interrompu et la chaîne est vidée avant d'exécuter le branchement. Il faut ensuite attendre à nouveau trois cycles pour obtenir un résultat. Pour un branchement retardé on termine le traitement commencé avant d'exécuter le branchement. Une bonne utilisation de ces branchements permet d'optimiser le fonctionnement du processeur. On peut trouver dans certains processeurs une unité qui cherche à anticiper la destination d'un branchement on parle de prédiction de la destination. Souvent l’adresse du branchement est contenue dans l’instruction de branchement, il est alors possible de charger l’instruction suivante dans le pipeline. C’est moins facile pour l’adresse de retour d’une fonction qui est stockée dans la pile. La prédiction de condition est plus difficile à réaliser. On procède de manière statistique par exemple. Ainsi en fin de boucle on revient systématiquement au début, sauf la dernière fois.

Le traitement des interruptions, que nous étudierons dans le prochain chapitre, pose

également quelques problèmes. En général, pour simplifier la gestion de la reprise du programme interrompu, les instructions engagées dans le pipeline sont traitées avant la prise en compte effective de l'interruption. Selon la longueur du pipeline cela peut générer un retard significatif.

Selon leur complexité, la durée de traitement de toutes les instructions n'est pas nécessairement identique. C'est particulièrement vrai en cas d'accès à la mémoire. Pour que les difficultés soient plus visibles considérons un processeur avec une quatrième unité fonctionnelle chargée de l'éventuelle lecture en mémoire des opérandes :

- unité de recherche (R); - unité de décodage (D); - unité de lecture (L); - unité d'exécution (E).

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 173

Page 174: Sylvain tisserant architecture et technologie des ordinateurs

Comme l'unité de lecture n'est pas toujours sollicitée le traitement d'une instruction prend 3 ou 4 cycles. Considérons le traitement de deux instructions consécutives I1 et I2, la première écrivant en mémoire, la seconde lisant en mémoire. La figure 25 illustre un conflit dans le traitement de ces deux accès. L'unité de lecture pour le besoin de l'instruction I2 aurait dû fonctionner au 4ème cycle d'horloge. Mais simultanément l'unité d'exécution aurait été en train d'écrire en mémoire. Le traitement de l'instruction I2 est donc pénalisé d'un cycle.

Il peut également y avoir conflit entre une instruction effectuant un accès mémoire et la recherche de l’instruction suivante. La séparation des instructions et des données permet de remédier à ce type d’aléas.

Nous avons simplifié. Le temps d'accès à la mémoire peut correspondre à plusieurs cycles

d'horloge. D'autre part ce temps d'accès peut être variable. Ainsi deux instructions consécutives peuvent faire appel au même bloc mémoire ou à deux blocs différents. En fonction de l'architecture de la mémoire nous savons que les temps d'accès pour les deux instructions peuvent être identiques dans un cas et différents dans l'autre. Par ailleurs, il peut y avoir dépendance entre deux instructions, la seconde ayant besoin d'une adresse calculée par la première par exemple. La gestion de ces problèmes est généralement résolue par les compilateurs qui peuvent insérer des instructions NOP ou permuter des instructions du programme en tenant compte des spécificités du processeur.

R

L

E

1 2 3 4 5

D

I1

I1

I1

I1

I2

I2

I2

I2

6

Figure 25

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 174

Page 175: Sylvain tisserant architecture et technologie des ordinateurs

VII.12 Unités d'exécution parallèles Dans le précédent paragraphe nous avons étudié le découpage principalement de l'unité de commande en unités fonctionnelles pouvant travailler en parallèle. On peut également trouver plusieurs unités d'exécution ou de calcul. L'unité de commande choisit l'unité à utiliser en fonction du type de l'instruction : ALU, FPU (Floating Point Unit) ou unité multimédia. Ce mode de fonctionnement ressemble à l'utilisation d'un coprocesseur. Un coprocesseur n'est pas utilisé pour exécuter du traitement parallèle mais pour augmenter ou améliorer les fonctionnalités du CPU. Celui-ci charge des registres pour fournir des données au coprocesseur, démarre ce dernier et se suspend jusqu'à ce que le traitement demandé soit effectué. En fin d'exécution le coprocesseur place le résultat dans un registre, réveille le processeur principal et se suspend jusqu'à une nouvelle requête. Un coprocesseur peut permettre d'augmenter l'ensemble des instructions ou réaliser certains calculs plus rapidement que l'unité centrale ("coprocesseur flottant"). Si le processeur est capable d'exécuter en parallèle plusieurs instructions différentes sur plusieurs unités d'exécution il est dit superscalaire. Il peut en particulier disposer de plusieurs unités arithmétiques et logiques parallèles. L’unité de commande dispose d’un bloc de distribution qui détermine au fur et à mesure quelles instructions peuvent être traitées en parallèle. Il faut également être capable de faire passer rapidement les résultats intermédiaires d’une unité d’exécution à une autre. Les performances d'une machine superscalaire peuvent être améliorées si le compilateur est capable d'identifier les instructions pouvant être exécutées simultanément, c'est-à-dire sans dépendance. L'approche Très Long Mot Instruction (VLIW : Very Long Instruction Word) est assez similaire, mais le parallélisme est totalement géré par le compilateur. Les instructions pouvant être exécutées simultanément sont placées dans un mot de grande longueur (128 bits pour i860 d'Intel). On peut également imaginer un processeur avec une unité de contrôle mais disposant de n unités d'exécution identiques et de n ensembles de registres. Cet ordinateur peut donc exécuter simultanément le même calcul sur n jeux de données. Cette configuration est appelée SIMD (Single Instruction on Multiple Data) ou processeur vectoriel. VII.13 Processus RISC En première approximation la puissance d'un système peut être identifiée au temps d'exécution d'une tâche. Celui-ci peut s'écrire sous la forme suivante :

temps/tâche = Nb.instructions/tâche x Nb.cycles/instruction x temps/cycle Le nombre de cycles par instruction est une moyenne, mais il doit tenir compte des transferts entre la mémoire et le processeur, y compris celui de l'instruction elle-même. Pour améliorer les performances, on peut donc agir sur chacun de ces trois termes, en tenant compte de leurs corrélations.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 175

Page 176: Sylvain tisserant architecture et technologie des ordinateurs

Le dernier terme correspond évidemment à la fréquence de l'horloge. L'évolution, dans un premier temps, a consisté à chercher la diminution du nombre d'instructions dans un programme, en utilisant des instructions et des modes d'adressage de plus en plus sophistiqués. Puis est apparue une philosophie différente qui cherche à réduire le nombre de cycles nécessaires à la réalisation de chaque instruction. Cette approche s'est appuyée sur les progrès réalisés en matière de matériel (mémoire virtuelle, cache, unité de gestion de mémoire, pipeline, etc.) et logiciel (compilateurs). Le concept RISC (Reduced Instruction Set Computer) est apparu en 1975 chez IBM (IBM801 de John Coke), d'après des idées de Seymour Cray, avant d'être approfondi dans les années 80 par les universités de Stanford et Berkeley. Il repose sur la constatation que même les systèmes ou les applications les plus sophistiqués n'utilisent qu'une petite fraction du jeu d'instructions à leur disposition. Des études statistiques, portant sur un grand nombre de systèmes d'exploitation et d'applications réels, ont montré que :

- Dans 80 % d'un programme on n'utilise que 20 % du jeu d'instructions. - Les opérations les plus usitées sont :

· les opérations d'échange entre l'unité centrale et la mémoire; · les appels à des sous-programmes.

- L'instruction d'appel d'une procédure est la plus gourmande en temps : sauvegarde et restitution du contexte et passage des paramètres.

- 80 % des variables locales sont des scalaires. - 90 % des structures de données complexes sont des variables globales. - La profondeur maximale d'appels imbriqués est en moyenne de huit. Une profondeur plus

importante ne se rencontre que dans 1 % des cas.

Les processeurs classiques sont désormais appelés CISC (Complex Instruction Set Computer) par opposition au terme RISC. L'apparition de mémoires très rapides à un coût très faible a constitué un des principaux arguments technologiques ayant favorisé les processeurs RISC. A l'origine les temps de décodage d'une instruction complexe et d'exécution du microcode correspondant étaient masqués par les temps d'accès à la mémoire. En réduisant celui-ci, le goulot d'étranglement s'est déplacé vers les unités de décodage et d'exécution. Il a donc fallu envisager un jeu d'instructions élémentaires câblées simplifiant l'architecture du processeur et réduisant les temps d'exécution. D'autre part, la capacité mémoire n'étant pratiquement plus limitée il n'y avait pas d'obstacle à augmenter la taille des programmes : la fonctionnalité de chaque instruction étant limitée il faut générer un plus grand nombre d'instructions (en pratique pas plus de 30 %).

Par contre la génération de code est plus compliquée. Les instructions complexes facilitent la traduction des programmes écrits en langage évolué. C'est également au compilateur de se charger de l'optimisation du code en fonction des caractéristiques des processeurs. Les recherches ayant débouché sur les processeurs RISC ont également porté sur les compilateurs. L'évolution des outils logiciels a vu l'émergence de compilateurs évolués permettant une optimisation efficace des codes générés avec des gains de l'ordre de 20 % en temps d'exécution. Le

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 176

Page 177: Sylvain tisserant architecture et technologie des ordinateurs

développement des compilateurs, pris en charge par les concepteurs de systèmes, et le développement des architectures sont très interdépendants. Passons en revue les idées de base qui font la spécificité des architectures RISC. L'objectif recherché est d'exécuter une instruction à chaque cycle d'horloge. Ceci est rarement réalisé sur la totalité du jeu d'instructions. L'obtention de cette performance repose sur la mise en œuvre de plusieurs principes :

- simplification des instructions; - simplification du format : longueur fixe des instructions et des champs; - restriction des modes d'adressage; - séquenceur câblé pour une exécution rapide; - utilisation intensive de registres très nombreux; - limitation des accès mémoire à deux instructions : LOAD et STORE; - utilisation de caches; - traitement anticipé des instructions (pipeline) : ce qui permet d'obtenir un résultat à chaque

cycle.

Le rôle du compilateur est essentiel pour l'optimisation du code engendré. Un effort particulier est fait sur les points suivants :

- allocation optimale des registres; - élimination des redondances; - optimisation des boucles, en ne conservant à l'intérieur que ce qui est modifié; - optimisation du pipeline; - optimisation du choix des instructions.

Le compilateur doit être capable d'exploiter au maximum les caractéristiques de l'architecture. La figure 26 illustre l'influence du temps d'accès de la mémoire sur les performances de deux processeurs (RISC et CISC) cadencés à 20 MHz. La performance maximale de l'architecture RISC sert de référence (performance relative = 1). On observe une nette différence de comportement entre ces deux courbes. Pour un temps d'accès mémoire inférieur ou égal à un cycle d'horloge (50 ns) il n'y a pas amélioration des performances pour l'architecture CISC qui sature. Par contre dans les mêmes conditions on constate un gain important (ici un facteur 2) en performance pour le processeur RISC. Par contre celui-ci n'est compétitif que lorsqu'il est associé à une mémoire rapide. Cette figure explique le développement presque exclusif des architectures CISC jusqu'à l'apparition d'une nouvelle génération de mémoires rapides. La simplicité des processeurs RISC fournit au moins deux autres avantages : le coût du développement et la surface de silicium sont notablement réduits. Plus simple un processeur RISC nécessite moins de temps et moins de main d'œuvre pour sa conception et sa mise au point. Par exemple le prototype RISC-II de l'université de Berkeley a été développé en deux ans par deux étudiants. De même le processeur ARM a été élaboré en dix-huit mois par une équipe de quatre personnes (6 hommes-ans). Par contre le 80386 d'Intel a demandé 100 hommes-ans. Le risque d'erreur de conception pouvant avoir un impact sur la clientèle avec retour de composants par exemple est aussi beaucoup plus faible. Le rapport coût/performance est donc largement en

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 177

Page 178: Sylvain tisserant architecture et technologie des ordinateurs

faveur des processeurs RISC. Par contre le développement des compilateurs est beaucoup plus long. Dans un processeur CISC l'unité de contrôle occupe plus de 50 % de la surface de la plaquette silicium. Dans un processeur RISC elle en occupe moins de 20 %, il reste donc plus de place pour intégrer registres, caches, unités d'exécution parallèles et unités de gestion.

0.8

1.0

0.4

0.2

0.6

100 200 ns0

RISC 0.8

1.0

0.4

0.2

0.6

100 200 ns0

CISC

Perf

orm

ance

rela

tive

Temps d'accès mémoire

Figure 26 Il nous reste à décrire une organisation particulière des registres internes que l'on rencontre dans certaines architectures RISC. Elle est identifiée sous la dénomination de technique des fenêtres de registres. destinée à faciliter le passage de paramètres lors d'appel de procédures. Le nombre des registres est toujours important dans un processeur RISC. Il y avait par exemple 138 registres dans le prototype RISC-I de Berkeley avec lequel la technique a été développée. Celle-ci repose sur les statistiques déjà mentionnées sur le partage des variables et la profondeur d'imbrication des appels de procédures. Pour le RISC-I les dix premiers registres, accessibles à tous les niveaux, sont destinés à recevoir les variables globales. Les 128 registres suivants sont divisés en huit groupes ou fenêtres. Chaque groupe correspond à une profondeur d'appel. La profondeur maximale est donc limitée à huit. Les six premiers registres d'un bloc servent à l'échange des informations avec l'étage supérieur. Les dix autres sont disponibles pour les variables locales. Outre les registres globaux, chaque niveau intermédiaire dispose donc de vingt-deux registres : les seize qui lui sont propres et les six premiers registres de l'étage suivant (fig. 27). Cette technique simplifie les échanges d'informations entre les procédures appelantes et appelées. Elle demande cependant beaucoup de temps lors de la sauvegarde des registres en cas d'interruption. Les architectures CISC et RISC, utilisant les mêmes technologies, ont de plus en plus tendance a se rapprocher. Certains processeurs, par exemple, traduisent les instructions CISC en suites d'instructions RISC avant l'exécution. Cela permet d'assurer la compatibilité des nouveaux processeurs avec tous les logiciels développés antérieurement, ce qui est indispensable si on veut pouvoir vendre le nouveau processeur.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 178

Page 179: Sylvain tisserant architecture et technologie des ordinateurs

Niveau 1

Niveau 3

Niveau 5

Niveau 7

Niveau 0

Niveau 2

Niveau 4

Niveau 6

Niveau 8

10 registres globaux

10 registres locaux

6 registres d'échange

Figure 27

VII.14 Evaluation des performances Il est très important, pour le concepteur comme pour le client, de pouvoir évaluer les performances d'une machine. Pour cela l'idéal serait de pouvoir faire appel à un programme de test (benchmark) synthétisant l'ensemble des performances d'une architecture. Un tel programme universel n'existe pas. Par contre il existe un grand nombre de programmes de tests. Chacun de ces tests permet d'évaluer certains types de caractéristiques. Les tests peuvent être classés en trois familles :

- Les tests élaborés par les concepteurs de systèmes. - Les tests adaptés à des applications spécifiques : par exemple le CERN compare les

performances des machines en utilisant des programmes représentatifs des applications habituelles en physique des particules : analyses de données et simulations. C'est très certainement la meilleure solution.

- Les tests publics. Parmi ces derniers nous pouvons citer : Dhrystone, Linpack, Whestone, Doduc, etc. Par exemple Dhrystone est destiné à mesurer l'efficacité des processeurs et compilateurs pour des programmes écrits en langage C. Pour cette raison il fait souvent référence dans le monde UNIX. Il est basé

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 179

Page 180: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 180

sur une étude statistique des instructions relevées dans un millier de programmes réels. Il ne fait pas intervenir les opérations en virgule flottante, les opérations d'entrées/sorties et les appels aux fonctions systèmes. Le test consiste à exécuter une boucle de programme un nombre fixe de fois. La performance est exprimée en Dhrystone/seconde : le nombre moyen de boucles exécutées par seconde. Le test de Linpack, écrit en FORTRAN, est surtout destiné au domaine scientifique et en particulier aux calculateurs vectoriels. Il est basé sur le temps nécessaire à la résolution d'un système linéaire de 100 (300 ou même 1000) équations à 100 (300 ou 1000) inconnues. Les résultats sont exprimés en Mflops : millions d'opérations flottantes par seconde. On parle maintenant en Gflops et Tflops. Whestone est destiné à l'évaluation des performances arithmétiques et en particulier celles des co-processeurs. L'unité la plus fréquemment rencontrée dans la littérature publicitaire est le MIPS : million d'instructions par seconde. Il faut cependant être très prudent. Par exemple les fonctionnalités des instructions sont loin d'être comparables d'une machine à l'autre : plusieurs instructions pour un processeur peuvent être nécessaires pour obtenir le même résultat qu'une instruction d'un jeu plus complexe. D'autre part, lorsque le temps d'exécution n'est pas le même pour toutes les instructions il est indispensable de savoir quels types d'instructions ont été utilisés pour effectuer l'évaluation. D'autre part pour que les comparaisons puissent être significatives il faut assurer une standardisation des programmes d'évaluation. C'est le but par exemple d'une commission regroupant quatorze constructeurs créée en 1988 : la SPEC (System Performance Evaluation Cooperative). La SPEC a initialement retenu 10 programmes principalement écrits en C et en FORTRAN. Le temps d'exécution de chacun de ces programmes est comparé à un temps de référence : le temps d'exécution sur Vax 11/780. Le rapport entre cette référence et le temps d'exécution sur le système testé constitue un SPECratio. La moyenne pour les dix programmes fournit la mesure finale exprimée en SPECmark. Depuis 1992 on distingue performances pour les calculs en entiers ou en flottants : SPECInt92 et SEPECfp92.

Page 181: Sylvain tisserant architecture et technologie des ordinateurs

Les interruptions

VIII.1 Notion d'interruption Lorsqu'une machine fonctionne, sous le contrôle d’un système d'exploitation, l'unité

centrale est en permanence susceptible d’exécuter un programme. Le problème se pose alors de savoir à quel moment l'unité centrale va pouvoir prendre en compte les événements extérieurs à la séquence d'instructions qu'elle exécute : requête d’un périphérique, frappe d'une touche sur un clavier, insertion d'une disquette, fin d'impression, passage d’un objet devant un capteur, système d’alarme, etc.

A chacun de ces événements correspond une tâche à exécuter par l'unité centrale. Cette

tâche est codée sous forme d'une procédure du système d'exploitation. Pour pouvoir exécuter cette procédure il faut que se produise une rupture de séquence (fig. 1). Cette rupture doit avoir lieu dans un délai assez court. Pour les problèmes de type "temps réel" un temps maximum de prise en compte et de traitement doit pouvoir être garanti.

Exécution duprogramme en cours

Traitement dela requête

Continuation duprogramme

Requête

Figure 1

Comment signaler au CPU un événement asynchrone ? Une première approche, dite

des drapeaux, consiste à tester périodiquement en séquence chaque unité. Cette technique n'est pas très économique en temps, elle demande une attention constante du CPU et la liste exhaustive des intervenants à tester. Dans une autre approche les machines peuvent être dotées d'un système d’interruptions. Cette technique consiste à pouvoir interrompre "brutalement" l'exécution du programme en cours à la fin de l'instruction courante. Après sauvegarde de son état présent, le contrôle de l'unité centrale est confié à un sous-programme du système dépendant de la nature de l'interruption.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 181

Page 182: Sylvain tisserant architecture et technologie des ordinateurs

VIII.2 Système d'interruptions hiérarchisées A la notion d'interruption s'est très rapidement associée la notion de priorité, de

manière à ce que certaines requêtes soient servies avant d'autres. Prenons un exemple de la vie courante pour tenter de faire comprendre celle-ci. Imaginons que vous soyez en train d'étudier votre cours (ceci est juste une supposition !). Un camarade arrive pour vous demander un renseignement. Vous terminez la lecture de la phrase en cours, vous mémorisez mentalement où reprendre votre lecture, puis vous vous interrompez pour lui répondre. Vous auriez pu continuer en faisant semblant de n'avoir rien entendu : vous auriez masqué l'interruption. Pendant votre discussion avec votre camarade, un troisième personnage vient vous poser une autre question. S'il s'agit d'un autre camarade vous le laisserez patienter quelques minutes le temps de terminer avec la première demande de renseignement. S'il s'agit de votre professeur vous allez vous interrompre immédiatement (ceci est encore une supposition !) pour pouvoir lui répondre. La demande d'interruption du professeur a un niveau de priorité supérieur, elle peut interrompre l'interruption précédente.

La figure 2 représente un enchaînement de ruptures de séquence provoquées par des

interruptions hiérarchisées.

2 3 46 7

0

5

t

Priorité

Figure 2

Pendant le déroulement d'un programme intervient une première interruption de niveau 2. Elle est prise en compte, le programme est immédiatement interrompu pour permettre son traitement. Pendant celui-ci un événement extérieur génère une interruption de niveau 3. Le traitement de la première interruption est suspendu pour traiter cette nouvelle interruption. Une nouvelle interruption de niveau 6 se produit pendant l'exécution de la routine associée à l'interruption précédente. Celle-ci est interrompue pour traiter la dernière interruption. Pendant ce traitement une interruption de niveau 4 arrive. Comme celle-ci est de priorité inférieure à celle qui est en cours elle est masquée. Elle n'est prise en compte qu'à la fin du traitement de l'interruption de niveau 6. Elle est ensuite bloquée par une interruption de niveau 7. Son traitement reprend à la fin de celle-ci. L'unité centrale est ensuite rendue au traitement de l'interruption de niveau 3, ensuite à celle de niveau 2 et finalement le programme initialement interrompu peut reprendre son déroulement.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 182

Page 183: Sylvain tisserant architecture et technologie des ordinateurs

On trouve les systèmes d'interruptions les plus élaborés dans les ordinateurs orientés vers les applications "temps réel" de conduite de processus industriels ou d'acquisition de données. Dans certains cas chaque niveau est découpé en sous-niveaux de priorités différentes. Un bon système doit permettre au programmeur de pouvoir :

- activer/invalider le système d'interruption dans son ensemble; - armer/désarmer chacune des interruptions individuellement : une interruption

désarmée est ignorée; - masquer/démasquer individuellement chaque interruption : une interruption masquée

n'est pas ignorée, elle est mémorisée, mais elle n'est prise en compte que lorsqu'elle est démasquée;

- établir une hiérarchie entre les sources d'interruption avec plusieurs niveaux de priorité, si possible de façon dynamique;

- associer un programme spécifique à chaque interruption.

VIII.3 Les causes d'interruption Il y a deux grandes catégories d'interruptions : les interruptions externes et les

interruptions internes. Les interruptions externes matérielles sont dues aux périphériques (imprimante,

terminal, horloge externe, etc.) ou à des dispositifs extérieurs au système informatique (capteurs, système d’alarme, etc.). Par exemple un périphérique va générer une interruption pour signaler au système qu'il a terminé de traiter la requête précédente et qu'il est prêt pour recevoir une nouvelle commande. Dans le contexte de contrôle de processus, des phénomènes physiques doivent être signalés au système, par exemple le passage d'un objet devant un détecteur. Dans ce cas c'est le dispositif externe au système qui émet un signal qui est reçu par le système comme une interruption.

Le programme courant lui-même peut déclencher une interruption à l’aide d’une

instruction spéciale. Cela permet, par exemple, d’activer certains services du système qui nécessitent de bénéficier de privilèges réservés au système. C’est une interruption externe et logicielle.

Les interruptions internes produites par le processeur, sur des erreurs par exemple

(division par zéro, dépassement de capacité, erreur d'adressage, accès à une zone de mémoire protégée, etc.). Ces interruptions sont généralement appelées exceptions.

Les interruptions induites par l'horloge permettent la gestion du temps par le système

d'exploitation. Par exemple, le système peut programmer l'horloge pour que celle-ci génère une interruption toutes les 10 ms. A chacune de ces interruptions le système peut reprendre la main et exécuter un algorithme de choix de tâches (ordonnanceur) de manière à éviter qu'un programme monopolise le CPU. Ces interruptions peuvent également servir à la gestion du temps dans les programmes et pour la comptabilité.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 183

Page 184: Sylvain tisserant architecture et technologie des ordinateurs

VIII.4 Mécanisme d'interruption Décrivons les différentes étapes du traitement d'une interruption.

VIII.4.a Identification de la source d'interruption L'unité centrale dispose d'une entrée spéciale, généralement appelée IRQ (Interrupt

ReQuest), associée à un bit dit bit d'interruption. Avant de passer à l'instruction suivante, le CPU teste l'état de ce bit. S'il est à 1 le CPU est informé d'une demande d'interruption. Pour pouvoir la traiter il doit en déterminer l’origine. Il existe deux méthodes principales pour identifier la source d'une interruption : la scrutation (polling) et l'identification directe. Le choix entre ces deux méthodes est généralement le résultat d'un compromis coût/performance selon en particulier le nombre potentiel de périphériques qui peuvent être connectés. Etudions quelques mécanismes d'identification de la source d'une interruption. De très nombreuses architectures sont possibles.

Dans le premier exemple, basé sur le principe de la scrutation, toutes les lignes

d'interruption sont réunies par une porte OU (fig. 3) :

IRQCPUlignes

d'interruption

registre

bus dedonnées

IACK

Figure 3

Chacune des lignes correspond à un périphérique. Lorsque le bit d'interruption est trouvé à 1 par le CPU, une routine de service est activée. Celle-ci va tester l'état de la ligne de chacun des périphériques pour identifier le demandeur, puis exécuter la tâche correspondante. Sur l’exemple illustré par la figure précédente, à la réception d’un signal sur l’entrée IRQ le processeur émet un signal IACK qui charge l’état des lignes de demande dans un registre. Le processeur lit ensuite ce registre pour identifier l’origine de la demande. Il peut aussi n'exister qu'une seule ligne d'interruption que chaque périphérique demandeur maintient dans un état haut. L'unité centrale est alors obligée d'interroger chacun des périphériques présents sur le bus pour lui demander s'il requiert un service. La priorité est ici définie par l'ordre dans lequel les lignes sont testées. En général dans ce mode de fonctionnement une interruption n'est elle-même pas interruptible car le mécanisme de scrutation est assez long.

Une autre méthode consiste en un code envoyé par le périphérique (fig. 4). Ce code est

utilisé pour exécuter une routine de service spécifique au périphérique. Ce code peut être par exemple un pointeur dans une table contenant le vecteur d'interruption de chaque routine de service. Un vecteur d'interruption contient l'adresse de début de la procédure de traitement de

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 184

Page 185: Sylvain tisserant architecture et technologie des ordinateurs

l'interruption et le registre d'état du processeur nécessaire au début du traitement. Celui-ci, qui peut contenir certains niveaux de privilèges nécessaires au traitement de la requête, remplace le registre d'état courant, après que ce dernier ait été sauvegardé dans la pile avec le reste du contexte du programme interrompu. Le traitement de l'interruption, qui débute à la première instruction spécifique à l'interruption, est donc plus rapide. Très souvent le code envoyé est défini sur le périphérique par un ensemble de petits interrupteurs à positionner au moment de son installation. Dans ce schéma une routine de service peut elle-même être interrompue.

IRQCPUlignes

d'interruption

bus de données

registre code associéau périphérique

Figure 4 La technique précédente nécessite un mécanisme pour empêcher deux périphériques

d'écrire leur code simultanément sur le bus. Il est également possible de chaîner les périphériques (fig. 5). La priorité est alors définie par la position du périphérique sur la ligne d'interruption : daisy-chain ou chaînage de priorité. Par exemple le périphérique P3 ne peut faire passer sa demande (IRQ) que si P1 et P2 n'ont aucune demande en cours. Dans le cas contraire le demandeur en amont empêche la transmission du signal de reconnaissance (IACK) émis par le CPU et qui autorise l'écriture du code sur le bus. La routine de service pour P3 pourra être interrompue à tout moment par une requête de P1 ou P2.

bus de données

P1P2P3

IRQ

IACK

Figure 5 La figure 6 présente le schéma de principe d’une partie d'un contrôleur d'interruption

programmable, avec un registre d'entrée qui permet un échantillonnage régulier des signaux d'interruption, ici au nombre de huit. Le second registre contient les interruptions mémorisées qui restent à traiter : OU de lui-même (mémoire) avec le registre d’entrée (nouvelles requêtes). Le processeur peut également programmer un masquage des interruptions en

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 185

Page 186: Sylvain tisserant architecture et technologie des ordinateurs

chargeant un registre de masque. Dans cet exemple, la table des vecteurs est stockée dans une mémoire morte. Le registre de masque et la table des vecteurs sont accessibles par le bus de données. La logique d’effacement des interruptions traitées n’est pas représentée sur ce schéma.

I0

Encodeur

prioritaire

ROM :

Table

des

vecteursI7

H

CS

Masque

IRQ

Figure 6

VIII.4.b Actions à entreprendre Lorsqu'une interruption est détectée il faut que le système réagisse le plus rapidement

possible. Pour cela le matériel déclenche un branchement automatique vers une routine système préparée à l'avance. Cette routine se trouve à une adresse fixe qui peut être câblée. L'état de la machine doit être sauvegardé. Le contexte (en particulier, la table des pages, horloge, etc.) du programme interrompu est sauvé, en général dans une pile. Cette sauvegarde du contexte peut être réalisée par la routine de service elle-même (cela permet par exemple : une sauvegarde des registres utilisés uniquement) ou prise en charge automatiquement par l’unité centrale de traitement. En fonction du code identifiant le périphérique responsable de l'interruption l'adresse de la routine de service associée est chargée dans le compteur ordinal, ce qui provoque un branchement automatique. Le registre d’état peut également être modifié pour éventuellement bénéficier de certains privilèges particuliers. Les interruptions de niveau inférieur ou égal doivent être masquées.

Ce mécanisme est rapide car c'est le matériel qui se charge du branchement vers la

routine d'interruption, de la sauvegarde du contexte et la modification du compteur ordinal. Il offre une grande souplesse car il est possible d'écrire une grande variété de routines de service. Il peut cependant être pénalisant pour un processeur avec pipe-line et un grand nombre de registres. Dans certaines architectures, en particulier celles orientées vers les

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 186

Page 187: Sylvain tisserant architecture et technologie des ordinateurs

applications temps réel, un processeur supplémentaire peut être associé au processeur principal avec pour tâche de gérer les opérations d'entrées/sorties et de filtrer les interruptions.

VIII.4.c Reprise du programme interrompu. Le programme en cours est suspendu pendant le temps de traitement de l'interruption.

Le contexte doit ensuite être restauré avant la reprise de son exécution. Au retour de la routine de service il faut également démasquer les niveaux masqués à son appel.. L'interruption est ainsi totalement transparente. La remise à jour du compteur ordinal provoque le retour au programme à l'instruction suspendue. VIII.5 Gestion des entrées/sorties

Nous avons vu que les interruptions servent beaucoup à la gestion des entrées/sorties. Nous allons dans ce paragraphe préciser quelques notions supplémentaires concernant la communication avec les périphériques d’entrées/sorties.

Un dispositif d’entrée sortie comprend en général deux parties : un appareil (clavier, écran, disque, imprimante, etc.) et un contrôleur de périphérique. Ce dernier sert d’interface entre l’appareil et le processeur. Il reçoit les requêtes du processeur et les transforme en commandes spécifiques au périphérique, et réciproquement. Ce mécanisme permet une grande souplesse et ne nécessite pas d’instructions spécialisées à chaque type possible de périphérique. L’unité centrale de traitement communique avec un périphérique uniquement en mode lecture ou écriture comme pour la mémoire. Les données proprement dites sont accompagnées de commandes (actions à réaliser) et d’informations (par exemple état du périphérique). Le contrôleur de périphérique est chargé d’interpréter les requêtes ainsi transmises par le processeur et il met également en forme les informations à renvoyer au processeur. Un contrôleur peut être équipé d’un processeur, de registres et d’une mémoire tampon. Il peut être chargé de la gestion des incidents, du contrôle d’erreurs, de la conversion de format, etc. C’est le contrôleur de périphérique qui déclenche l’envoi d’un signal d’interruption.

Par rapport au dialogue on classe souvent les périphériques en deux catégories :

- Les périphériques par caractères, pour lesquels la communication se fait sous la forme d’un flux de caractères par l’intermédiaire de registres.

- Les périphériques par blocs, pour lesquels l’information est accessible par blocs, chaque bloc disposant d’une adresse.

Selon les architectures les adresses des registres ou des blocs peuvent faire partie de la mémoire principale ou correspondre à des zones distinctes à cette mémoire centrale. Ces adresses peuvent être attribuées lors de la mise en place du matériel (par un exemple au moyen de petits interrupteurs ou cavaliers à positionner) ou configurées dynamiquement.

Lorsque les quantités de données à échanger sont importantes, il est pénalisant de

charger le processeur de gérer ces échanges. Il est alors préférable de permettre une communication directe entre le périphérique et la mémoire, ou même entre deux

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 187

Page 188: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 188

périphériques. Ce mode de communication est appelé DMA : Direct Memory Access. La gestion des échanges sur le bus de données est alors déléguée à un contrôleur DMA.

Sur le plan logiciel on trouve une couche supplémentaire sous le système

d’exploitation pour lequel, nous avons dit, le contrôle-commande d’un périphérique peut se limiter à des accès mémoire. Cette couche, appelée pilote ou driver, traduit les commandes générales d’échanges par caractères ou par blocs en commandes spécifiques au périphérique, avec par exemple la gestion des signaux de contrôle de la liaison, des contraintes de temps à respecter, etc. Ces pilotes sont fournis avec le matériel.

Page 189: Sylvain tisserant architecture et technologie des ordinateurs

Les entrées/sorties IX.1 Introduction L'informatique sert au traitement de l'information. Il est donc indispensable d'être capable de fournir l'information à traiter à un ordinateur et de récupérer les résultats. Le système informatique doit pouvoir communiquer avec l'extérieur. Ces opérations d'échange constituent les Entrées/Sorties (E/S ou I/O : Input/Output). A l'origine l'opérateur entrait les informations à l'aide de clefs ou interrupteurs. On a ensuite utilisé rubans et cartes perforés dont l'invention est largement antérieure à celle de l'informatique. Un ruban perforé, en papier résistant, pouvait contenir des trous sur 5 ou 7 pistes parallèles. D'emploi facile, les rubans étaient cependant fragiles et difficiles à modifier. C'est pourquoi les rubans ont progressivement été remplacés par les cartes perforées. Une carte, en carton et de forme rectangulaire, comptait 80 colonnes et 12 lignes. Elle pouvait donc recevoir jusqu'à 80 mots de 12 bits. Par exemple 80 caractères. Chaque caractère était représenté, selon le code Hollerith, à l'aide de perforations dans la colonne correspondante. Bien qu'ayant disparue, l'influence de la carte perforée s'est longtemps faite sentir dans certains formats, comme celui des écrans alphanumériques à 80 colonnes. Ensuite sont apparus claviers, imprimantes, bandes magnétiques, disques et disquettes, terminaux interactifs, souris, crayons optiques, etc. Les ordinateurs peuvent également recevoir les informations de capteurs et envoyer des signaux électroniques à des périphériques : commande de processus industriels ou acquisition de données. Ils peuvent aussi échanger des informations entre eux par l'intermédiaire des réseaux. IX.2 Terminal interactif Un terminal interactif permet un échange bidirectionnel entre l'utilisateur et l'ordinateur. Il comprend au moins un clavier et un écran de visualisation encore appelé moniteur.

IX.2.a Clavier Le clavier sert à la saisie de texte. Extérieurement un clavier d'ordinateur ressemble à celui d'une machine à écrire, avec éventuellement des touches spéciales supplémentaires et un pavé numérique.

Il existe deux types de claviers : mécanique et à membrane. Un clavier mécanique, le plus fréquent, est une matrice de boutons poussoirs situés au-dessus d'un réseau de fils organisé en lignes et colonnes. Lorsqu'une touche est enfoncée elle réalise un contact à l'intersection d'une ligne et d'une colonne, fermant un circuit électrique. Un circuit de contrôle du clavier détecte

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 189

Page 190: Sylvain tisserant architecture et technologie des ordinateurs

ainsi la pression d'une touche. Le contrôleur est également chargé d'établir et de mémoriser le code correspondant à la touche enfoncée. Il peut alors émettre un signal d'interruption à destination de l'unité centrale.

Un clavier à membrane est constitué de quatre couches. La première est un circuit imprimé supportant un réseau de pistes conductrices. La deuxième couche constitue un isolant percé de trous au niveau des touches. La troisième couche est un circuit imprimé souple supportant un second réseau de pistes avec des bosses au niveau des touches et des trous. Lorsque l'utilisateur enfonce une touche il réalise un contact entre les deux couches conductrices. La quatrième couche, en caoutchouc, absorbe la pression du doigt et donne la sensation d'enfoncement de la touche.

Compteur

Déc

odeu

r

Transcodeur

code IRQH

Figure 1 La figure 1 présente un schéma logique simplifié d'un clavier et de son contrôleur. Le clavier est ici constitué d'une matrice 8 x 8. Au rythme du signal d'horloge (H) un compteur modulo 8 envoie un numéro de ligne codé sur 3 bits. Le décodeur met à "1" (par exemple +5 V) la ligne correspondante. Si une touche sur cette ligne est enfoncée la colonne correspondante se trouve également à "1". Chaque touche est identifiée par un numéro de ligne, donné par le compteur, et une colonne. Un transcodeur utilisant les 3 sorties du compteur et les 8 colonnes fournit un code, ici sur 8 bits, et un signal IRQ. De cette façon les lignes sont en permanence explorées en séquence. A part pour certaines touches, comme Majuscule ou Contrôle, l'encodage des colonnes doit avoir une logique prioritaire pour le cas où deux touches d'une même ligne seraient enfoncées simultanément. Il faut également un dispositif anti-rebond. Les fonctionnalités du circuit de la figure 1 sont aujourd'hui intégrées dans un microcontrôleur.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 190

Page 191: Sylvain tisserant architecture et technologie des ordinateurs

IX.2.b Tube à rayons cathodiques Tout comme les téléviseurs, la plupart des écrans des terminaux interactifs sont basés sur l'utilisation d'un tube à rayons cathodiques (CRT : Cathodic Ray Tube) dont le principe date de la fin du XIXème siècle. Un tube cathodique (fig. 2) comprend une source d'électrons, un système d'accélération et de focalisation et un système de déviations verticale et horizontale. Le tout est placé dans une ampoule de verre dans laquelle a été réalisé un vide poussé. Le canon à électrons est constituée d'une cathode en baryum, chauffée par un filament, suivie d'une grille à une tension modulable (wehlmet). On trouve ensuite deux anodes dont les potentiels croissants accélèrent les électrons. Deux jeux d'électrodes planes, permettent de dévier le faisceau d'électrons horizontalement et verticalement. Le système de déflexion peut également être électromagnétique. On obtient ainsi un faisceau d'électrons d'intensité modulable, très fin que l'on peut diriger en un tout point d'un écran. Cet écran est recouvert d'une substance luminescente (par exemple phosphore) qui, au niveau du point d'impact, transforme l'énergie cinétique des électrons en lumière.

déviationverticale

déviationhorizontale

anodes accélératrices

grille decontrôle

cathode

écran

Figure 2

Pour couvrir tout l'écran le faisceau d'électrons balaie celui-ci par lignes, partant du coin en haut à gauche (en regardant l'écran). Deux modes de balayage sont possibles. Le plus simple est visualisé sur la figure 3 : les lignes de balayage sont tracées en noir et les lignes de retour (inactives) en jaune. Il est possible d'obtenir une meilleure résolution en mode entrelacé. Dans ce mode, qui est utilisé en télévision, on rafraîchit alternativement les lignes impaires puis les lignes paires. Le premier balayage part du coin en haut à gauche de l'écran, le second part du centre haut de l'écran (fig. 4). Pour éviter tout effet de clignotement de l'image il faut rafraîchir l'écran au minimum 25 fois par seconde. Il faut également prendre garde à éviter les phénomènes de battement avec la fréquence du secteur. En pratique on travaille à un taux de rafraîchissement d'au moins 60-70 Hz.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 191

Page 192: Sylvain tisserant architecture et technologie des ordinateurs

balayage actif

retour inactif

mode non entrelacé

Figure 3

ligne paire

retour inactif

mode entrelacé

ligne impaire

Figure 4

Chaque ligne est divisée en un certain nombre de points ou pixels (contraction de picture element). Le pixel est la plus petite fraction de l'écran qui peut être contrôlée individuellement. Le nombre de ces pixels définit la résolution de l'écran, qui s'exprime sous la forme d'un produit de deux entiers :

Nb pixels/ligne x nb lignes

Pour un écran couleur trois faisceaux d'électrons sont nécessaires et chaque pixel est

constitué de trois grains de luminophores, groupés en triangle, émettant chacun une couleur différente : rouge, vert et bleu. L'ensemble des couleurs visibles peut s'obtenir en modulant l'intensité de ces trois couleurs de base. La plupart des tubes cathodiques contiennent un masque,

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 192

Page 193: Sylvain tisserant architecture et technologie des ordinateurs

plaqué contre la face interne du revêtement photosensible et percé de trous alignés avec les pixels. Le masque est disposé de façon à ce que chaque canon n'irradie que les luminophores auxquels il est associé. Les luminophores peuvent également être déposés en bandes continues verticales, les trous du masque sont alors remplacés par des fentes. La dimension physique d'un écran est spécifiée par la longueur de sa diagonale exprimée en pouces. Pour un écran plat l'angle d'incidence du faisceau varie selon la position du point d'impact. Cela a plusieurs conséquences. Tout d'abord si la tache du faisceau au centre de l'écran est circulaire, elle devient elliptique plus on s'approche des bords et surtout des coins. Pour éviter des distorsions et un flou de l'image, la forme du faisceau doit être déformée en conséquence pour compenser cet effet. C'est également une des raisons pour lesquelles la profondeur des tubes est importante : elle ne peut être guère plus courte que la diagonale de l'écran. Si la surface de l'intersection du faisceau avec l'écran varie en fonction du point d'impact, il en est de même pour la densité de puissance reçue par l'écran et surtout le masque. La température de celui-ci n'est pas uniforme. Les déformations thermiques ont alors pour effet de dégrader l'alignement de ses trous ou fentes par rapport aux pixels. Pour éviter ce problème on utilise un matériau à faible coefficient de dilatation. Tout ceci explique pourquoi il a été difficile d'obtenir des écrans plats à coins carrés avec cette technologie.

IX.2.c Ecrans alphanumériques Bien que ce type d'écran ait presque totalement disparu, nous allons nous intéresser au principe de gestion d'un écran alphanumérique monochrome. Puis nous étudierons quelques évolutions pour parvenir aux écrans graphiques. Afficher une image sur un écran monochrome consiste à allumer ou à éteindre chaque pixel. Mais même pour une image statique, la fréquence du rafraîchissement de l'écran ne permet pas une gestion directe de l'écran par l'unité centrale. Le contrôle de l'écran (balayages horizontal et vertical et intensité du faisceau) est confié à un contrôleur spécialisé. Une mémoire, dite de rafraîchissement, est intercalée entre l'unité centrale et le contrôleur. Les informations à visualiser sont mises à jour dans cette mémoire par l'unité centrale. A chaque cycle de rafraîchissement de l'écran le contrôleur du tube cathodique explore cette mémoire. Les caractères sont généralement codés en ASCII, pour les afficher il faut les transformer en caractères typographiques. Les polices de caractères sont définies par une matrice de n x m points, à l'intérieur d'une cellule tenant compte de la séparation des caractères. Chaque caractère est défini par les points qui sont à afficher dans la matrice. Il peut donc être représenté par m mots de n bits, les bits à 1 indiquant les points à visualiser :

0111111

1 1 1111111

1 1 1

0 0 0 00 00 00 00 00 00 0

0 00 0

0 00 00 0

00

000

000000

Figure 5

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 193

Page 194: Sylvain tisserant architecture et technologie des ordinateurs

Ces polices de caractères peuvent se trouver en mémoire morte (ROM) pour les polices définies par le constructeur ou être téléchargées par l'utilisateur en mémoire vive (RAM). En mémoire de rafraîchissement chaque caractère à visualiser est stocké dans une zone pouvant comporter plusieurs champs (fig. 6) : code (par ex. : ASCII), numéro de police et attributs (vidéo inverse, gras, double largeur, souligné, etc…). Cette méthode permet d'utiliser une police et des attributs différents pour chaque caractère à imprimer.

01000001 100 01001

codepoliceattributs

Figure 6

Le contrôleur d'écran doit périodiquement engendrer les signaux de commande du balayage et de l'intensité du faisceau d'électrons. Il boucle en permanence sur les lignes de caractères contenues en mémoire d'écran. Pour chaque ligne il y a m balayages horizontaux à réaliser. Pour chacun de ces balayages le contrôleur d'écran (fig. 7) effectue une boucle sur les colonnes de la ligne et réalise les opérations suivantes :

- Recherche en mémoire de rafraîchissement de l'information (code, police, etc.) sur le caractère à visualiser. Celui-ci est identifié (adressé) par un numéro de ligne et un numéro de colonne.

- Recherche en ROM ou RAM, du mot de la matrice de points correspondant au balayage, au caractère et à la police.

- Emission du signal de commande de l'intensité du faisceau d'électrons en fonction des n bits identifiant les points à allumer.

La figure suivante illustre un concept pouvant s'appliquer à un tel contrôleur. Supposons que

l'écran comprend 2l lignes, comptant chacune 2c caractères et que tout caractère est défini par une matrice 2r x 2b pixels. L'écran est donc constitué de N = 2l+c+r+b pixels au total. Il est donc possible d'utiliser un compteur binaire de l + c + r + b bascules et d'utiliser les sorties de la manière suivante :

- Les l bits de haut poids permettent d'identifier la ligne de caractères à afficher. - Les r bits suivants (rang sur la figure 7) correspondent aux 2r balayages horizontaux par

ligne de caractères. - Les c bits suivants permettent d'identifier la colonne contenant le caractère à afficher. - Les derniers bits comptent les pixels horizontaux dans le caractère à afficher.

Les l + r bits de haut poids identifient la ligne de l'écran en cours de balayage, alors que les

c + b bits de bas poids identifient la position horizontale du pixel le long de cette ligne. Ces deux

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 194

Page 195: Sylvain tisserant architecture et technologie des ordinateurs

informations servent à contrôler le mouvement permanent du faisceau d'électrons. On utilise pour cela deux convertisseurs numériques analogiques dont les tensions de sortie commandent les deux jeux de plaques de déflexion.

Un autre convertisseur commande la tension de la grille. Comme il ne reçoit ici en entrée

qu'un seul bit provenant d'un registre à décalage il émet un signal de commande en tout ou rien.

ligne colonne bitrang

Compteur Mémoire d'écran

code police

Mémoirede caractères

Registre à décalage

H

CNA CNA CNA

HS VS grille

Bus système

Unitécentrale

Figure 7

Nous constatons que la mémoire d'écran qui sert d'interface entre l'unité centrale et le contrôleur du tube à rayons cathodiques est une mémoire à double accès. Un accès en écriture depuis le microprocesseur et un accès en lecture pour le contrôleur. Le système de codage employé en mémoire d'écran dans l'exemple précédent nécessite une étape de décodage avant d'envoyer le signal de commande vidéo (grille) au tube. Une méthode permet d'augmenter le taux de rafraîchissement en évitant cette étape. Il s'agit d'utiliser une mémoire dans laquelle chaque bit correspond à un pixel : "1" ou "0" selon que le pixel associé est allumé ou non. Cette très grande matrice constitue une image binaire de l'écran : mémoire de trame ou bitmap. Le contrôleur peut alors extraire directement le signal de commande de cette mémoire. Un gain de vitesse est obtenu au prix de plus de mémoire. Cette technique est largement employée dans les écrans graphiques.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 195

Page 196: Sylvain tisserant architecture et technologie des ordinateurs

IX.2.d Ecrans graphiques Les écrans graphiques permettent l'affichage de caractères et de dessins ou d'images. Il existe deux types d'écrans graphiques : les écrans à mémoire de trame et les écrans à balayage cavalier. Résumons le principe de la mémoire de trame que nous avons introduit plus haut. L'écran est divisé en petits domaines élémentaires : les pixels. Ces pixels sont répartis en lignes et colonnes. Pour les écrans monochromes chaque pixel possède deux états possibles : éteint ou allumé. Il est donc possible d'avoir une représentation logique d'un tel écran en associant un bit à chaque pixel. On obtient ainsi une image binaire : la mémoire de trame. Le contrôleur du tube cathodique balaie en parallèle ligne par ligne cette mémoire et l'écran, chaque bit à 1 est affiché. Le contrôle de l'intensité se fait en tout ou rien. Initialement cette mémoire de trame contenait l'image des caractères à afficher. Son usage s'est très vite généralisé pour l'affichage de dessins.

L'étape suivante a consisté à passer du "noir et blanc" à des niveaux de gris. Pour ce type d'écran il faut moduler l'intensité du faisceau d'électrons pour chaque pixel. Il faut alors plusieurs bits (par exemple 8 bits pour représenter 256 niveaux de gris) par pixel. Un convertisseur numérique analogique est alors utilisé pour commander l'intensité du canon à électrons. Le principe est toujours le même pour les écrans en couleur : il faut moduler les trois couleurs de base (bleu, rouge et vert). Leur mélange donne naissance aux autres couleurs. On peut utiliser trois mémoires de trame. Avec 1 bit par couleur fondamentale on peut obtenir huit couleurs, avec 8 bits par couleur on dispose d'une palette de seize millions de couleurs (224 = 16 106). Une autre solution consiste à avoir une seule mémoire, avec n bits par pixel. Entre la mémoire de trame et les trois convertisseurs numériques analogiques il faut intercaler une table de correspondance (look-up table) en mémoire morte ou vive. Cette table de couleurs permet d'associer à chacune des 2n combinaisons une couleur particulière, définie par trois intensités. Lorsqu'elle est rangée en mémoire vive cette table peut être redéfinie par l'utilisateur. Le rafraîchissement de l'écran est géré par le contrôleur du tube cathodique qui explore périodiquement la mémoire de trame. Lorsque l'image doit être modifiée l'unité centrale ne doit intervenir qu'au niveau de cette mémoire. Cependant compte tenu de l'importance de plus en plus grande du graphisme dans les applications et en particulier du 3D dans les jeux et les applications multimédia, la mise à jour de la mémoire de trame mobilise de plus en plus l'unité centrale et engorge le bus système. Une solution à ce problème consiste à insérer entre l'unité centrale et la mémoire de trame un processeur spécialisé (fig. 8). L'unité centrale transmet les actions à réaliser à ce processeur graphique grâce à des macro-instructions (tracer une droite, un cercle, déplacer l'image, etc.). Le processeur graphique se charge de la mise à jour de la mémoire de trame. L'unité centrale est alors libérée pour ses autres tâches et le trafic sur le bus système nettement réduit. L'architecture des processeurs graphiques s'est très vite spécialisée. Cette interface graphique est reliée à la mémoire de trame, encore appelée mémoire vidéo (VRAM), par un bus réservé. Une caractéristique importante de cette mémoire vidéo est son double accès en écriture et en lecture.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 196

Page 197: Sylvain tisserant architecture et technologie des ordinateurs

Unitécentrale

Interfacegraphique

Mémoire Vidéo

Contrôleur d'écran

Bus système

CRT

Figure 8

Dans un écran à balayage cavalier on utilise le faisceau d'électrons comme un crayon pour dessiner. Il est programmé pour dessiner une image par segments. Cette technique, adaptée aux structures filiformes, est utilisée dans certaines stations de conception assistée par ordinateur (CAO) car elle permet une très grande finesse du trait.

IX.2.e Ecrans à cristaux liquides L'apparition des écrans plats à cristaux liquides (LCD : Liquid Crystal Display) a permis, grâce à leur encombrement réduit et leur faible consommation, l'éclosion des "portables". Les cristaux liquides sont des liquides dont les molécules longues s'organisent selon un réseau comme les atomes d'un cristal. Elles se disposent en couches dans lesquelles elles ont toutes la même orientation. Il est possible de contrôler l'orientation de ces molécules en les plaçant au contact avec une surface très finement gravée. Dans un écran à cristaux liquides ceux-ci sont pris en sandwich entre deux plaques de ce type dont les rainures sont perpendiculaires. Les molécules dans les deux couches au contact avec ces plaques ont donc des orientations orthogonales. L'orientation dans les couches intermédiaires varie continûment avec la profondeur de 0° à 90°. Les longues molécules des cristaux liquides se polarisent facilement. Cette caractéristique a deux conséquences qui sont mises à profit dans les écrans à cristaux liquides. Si on place ces molécules dans un champ électrique elles s'alignent parallèlement à celui-ci. Par ailleurs l'interaction collective de ces molécules avec le champ électrique de la lumière a pour effet de faire tourner le plan de polarisation de la lumière pour le rendre parallèle à l'orientation des molécules. Dans un écran à cristaux liquides ceux-ci sont placés entre deux filtres polarisants croisés. La polarisation de chaque filtre est parallèle à celle des rainures de la face en regard. Ainsi la lumière qui pénètre dans le liquide est-elle polarisée parallèlement avec la première couche de molécules. Au fur et à mesure que la lumière traverse le liquide son plan de polarisation tourne avec les molécules. A la sortie le plan de polarisation a donc pivoté de 90° pour se trouver parallèle au second filtre polarisant. Celui-ci laisse donc passer la lumière : l'écran est transparent.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 197

Page 198: Sylvain tisserant architecture et technologie des ordinateurs

On place deux électrodes planes de part et d'autre des cristaux liquides. Lorsque ces électrodes sont soumises à une tension elles créent un champ électrique perpendiculaire à l'écran. Les molécules s'alignent avec ce champ et n'interagissent alors plus avec la lumière dont le plan de polarisation n'est pas modifié par la traversée du liquide. La lumière est alors absorbée par le second filtre : l'écran est opaque. Cependant l'alignement des molécules avec le champ électrique n'est pas instantané. La vitesse de ce réarrangement dépend de l'intensité du champ électrique et de la viscosité du liquide. Il est ainsi possible de moduler la quantité de lumière transmise. La figure suivante illustre le principe d'un écran à cristaux liquides dit à matrice passive. Il est constitué de plusieurs couches de matériaux. On trouve dans le sens du parcourt de la lumière :

- Un filtre polarisant. - Une plaque de verre. - Une série d'électrodes en oxyde métallique transparent en forme de longues bandes

parallèles. - Une plaque de polymère gravée avec de très fines rainures parallèles à la polarisation du

premier filtre. - Les cristaux liquides. - Une seconde plaque d'alignement aux rainures orthogonales à celles de la première. - Une seconde série d'électrodes en bandes orthogonales aux premières électrodes. - Une couche de protection. - Un filtre coloré constitué de bandes rouges, vertes et bleues parallèles et alternées. - Une plaque de verre. - Un second filtre polarisant croisé par rapport au premier.

Tous les matériaux utilisés sont transparents. Les deux plaques de verre servent de supports mécaniques aux autres couches. L'épaisseur du liquide est contrôlée par de fines entretoises. Les deux couches d'électrodes correspondent aux lignes et aux colonnes. Un pixel est défini par l'intersection de deux électrodes. Comme dans un tube à rayons cathodiques les pixels sont balayés périodiquement. Une différence de potentielle est appliquée sur les deux électrodes (ligne et colonne) correspondantes pendant un petit intervalle de temps. L'amplitude de cette tension permet de moduler d'intensité lumineuse du pixel correspondant. Sa couleur est définie par le filtre coloré. La juxtaposition de pixels avec les trois couleurs de base permet d'obtenir les autres couleurs.

La face arrière de l'écran est éclairée par des tubes fluorescents basse tension dont la lumière blanche est répartie uniformément sur toute la surface par un diffuseur. Cette technique permet la réalisation d'écrans plats, de faibles épaisseurs et à consommations réduites. Contrairement aux tubes cathodiques pour lesquels la lumière est émise au niveau de l'écran dans un grand angle solide, il faut regarder un écran à cristaux liquides de face.

Très bon marché cette technologie à matrice passive présente quelques inconvénients. Elle

est assez lente ce qui réduit le taux de rafraîchissement. Lorsqu'une tension est appliquée entre une ligne et une colonne le champ électrique influence les pixels voisins. Une autre technique, dite à matrice active, permet de remédier à ces difficultés. Les électrodes sont segmentées petits

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 198

Page 199: Sylvain tisserant architecture et technologie des ordinateurs

carrés correspondants aux pixels. Ce découpage permet d'éviter d'influencer les pixels voisins. Chaque pixel est commandé par un transistor, ce qui permet un gain important en vitesse. Ces transistors sont fabriqués sur des films de silicium très fins déposés sur un substrat de quartz de grandes dimensions. Ces films contiennent plusieurs millions de transistors qui ne doivent pas présenter de défaut. Les films de transistors peuvent maintenant être réalisés avec du silicium polycristallin déposé sur un substrat en verre (le dépôt du silicium se fait à plus basse température que pour obtenir un monocristal). On cherche à utiliser du silicium amorphe.

filtrespolarisantscroisés

électrodestransparentes

filtre de couleurs

plaquesrainurées

Figure 9

IX.2.f Souris Outre le clavier l'utilisateur communique avec un ordinateur par l'intermédiaire d'une interface graphique et d'une souris. La plupart des souris actuelles sont optoélectroniques. Une boule en acier recouverte de caoutchouc entraîne deux roues dont les axes sont perpendiculaires. Une troisième roue équipée d'un ressort maintient la boule en contact avec les deux autres roues. Sur l'axe de chacune de ces deux roues se trouve un disque percé de fentes radiales. Chaque disque tourne entre deux cellules décalées. Chaque cellule contient une diode électroluminescente et une photodiode. Le comptage des impulsions lumineuses permet de mesurer le déplacement de la souris dans une direction. Le décalage entre les deux cellules permet de déterminer le sens du mouvement.

Un crayon lumineux est un détecteur optique, qui en contact avec l'écran, permet de repérer le passage du faisceau d'électrons du tube cathodique. Il envoie un signal au contrôleur vidéo qui peut ainsi déterminer sa position par rapport à l'écran.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 199

Page 200: Sylvain tisserant architecture et technologie des ordinateurs

IX.3 Imprimantes Dès les débuts de l'informatique, l'imprimante est apparue comme un outil indispensable pour fournir à l'homme les résultats des calculs. Il existe une grande variété d'imprimantes : à impact, thermiques, à jet d'encre, à laser, etc.

IX.3.a Imprimantes à impact de marteaux Parmi ces imprimantes citons les imprimantes à marteaux. Il y a un marteau par colonne. Les caractères sont gravés en relief sur un ruban métallique qui tourne en permanence devant les marteaux. Un ruban encreur est placé entre le ruban métallique et le papier. Le papier avance ligne par ligne. L'électronique de l'imprimante déclenche la frappe de chaque marteau lorsque le bon caractère gravé passe devant : frappe à la volée. Cette technologie permet de réaliser des imprimantes très rapides (jusqu'à 3000 lignes par minute). Dans certains modèles le ruban métallique peut être remplacé par un tambour horizontal ou une "marguerite". Ces premiers types d'imprimantes, parmi lesquelles nous pouvons encore mentionner l'imprimante à boule d'IBM, sont les seules à disposer de lettres préformées, assurant une excellente qualité d'impression (comparable à celle des machines à écrire). Par contre les polices de caractères sont limitées en nombre et elles sont incapables d'imprimer des graphiques.

IX.3.b Imprimantes à aiguilles Dans ces imprimantes les caractères sont représentés par des points dans une grille ou matrice. La tête d'impression comporte autant d'aiguilles que de points par colonne. La tête se déplace horizontalement devant la ligne à imprimer. Pour chaque caractère les aiguilles correspondant aux points à marquer sont lancées par de petits électro-aimants. Elle frappent ainsi le ruban encreur situé entre la tête et le papier. Compte tenu de l'inertie des aiguilles il est difficile de réaliser des imprimantes rapides. Les polices de caractères sont stockées en mémoire. Dans certains cas elles peuvent être téléchargées par l'ordinateur. De plus elles peuvent imprimer point par point des graphiques et des dessins. Simple et fiable, cette technologie permet de produire des imprimantes bon marché. Permettant de faire des copies carbone elles sont très utilisées dans les administrations. La qualité des imprimantes est déterminée par la densité de points exprimée en dpi (dots per inch) ou ppp (points par pouce).

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 200

Page 201: Sylvain tisserant architecture et technologie des ordinateurs

IX.3.c Imprimantes thermiques Les imprimantes thermiques ressemblent aux imprimantes matricielles à aiguilles. Au lieu de frapper un ruban les aiguilles chauffent un papier spécial sensible à la chaleur. Peu utilisées pour l'impression monochrome, elles permettent l'impression couleur. On utilise un rouleau de cellophane recouvert d'une encre solide, composé d'une succession de régions jaune, cyan, magenta (les trois couleurs primaires) et noire éventuellement. Une série de têtes thermiques est disposée perpendiculairement au sens de défilement du papier. L'impression de chacune des couleurs primaires nécessite un passage du papier devant les têtes. L'impression se fait donc en trois ou quatre passes. Il existe deux technologies. Dans le cas du transfert thermique on utilise une encre à base de cire qui fond lorsqu'une tête thermique est activée. Par pression mécanique on obtient un point. Les couleurs de base (rouge, vert, bleu et noir) sont obtenues par superposition des couleurs primaires. Les autres couleurs sont obtenues par juxtaposition de points. La résolution est d'environ 300 ppp. Pour la technologie de la sublimation thermique le colorant passe de l'état solide à l'état gazeux lorsqu'une tête thermique est activée. Il diffuse alors sur le papier où il revient à l'état solide. La quantité de colorant vaporisée peut être contrôlée par la température de la tête thermique. Il est donc possible de définir l'intensité des couleurs primaires. Par superposition on peut disposer d'une très large palette de couleurs. L'impression sans trame est d'excellente qualité.

IX.3.d Imprimantes à jet d'encre Dans une imprimante à jet d'encre la tête de lecture est composée de petits tubes qui projettent de minuscules gouttelettes d'encre. Ces gouttelettes, chargées électrostatiquement, sont dirigées vers le papier avec une grande précision par un système de plaques de déviation. L'absence d'impact mécanique rend son fonctionnement très silencieux. D'autre part, en augmentant le nombre des tubes il est possible imprimer simultanément plusieurs couleurs. L'impression est de très bonne qualité. La résolution varie entre 200 ppp et 400 ppp.

IX.3.e Imprimantes à laser Le fonctionnement des imprimantes à laser s'inspire de celui des photocopieuses. L'image de la page à imprimer est construite sur un tambour photoconducteur. Cette image est obtenue avec un faisceau laser réfléchi sur un miroir mobile, piloté par l'électronique de l'imprimante. Le tambour passe devant une station d'encrage où l'encre sèche, chargée électrostatiquement, est attirée aux endroits chargés du tambour. L'image est ensuite transférée sur le papier par contact. Le papier est chauffé pour fixer définitivement les particules d'encre. Cette technique permet l'impression sur papier ordinaire. On atteint des résolutions variant entre 300 et 2000 ppp. Dans certains modèles les polices de caractères sont définies géométriquement. Il est alors possible d'obtenir une qualité proche de celle d'un imprimeur.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 201

Page 202: Sylvain tisserant architecture et technologie des ordinateurs

IX.4 Supports magnétiques

IX.4.a Enregistrement magnétique Le principe de l'enregistrement magnétique est identique à celui mis en œuvre dans un magnétophone. On utilise les propriétés magnétiques de certains matériaux ferromagnétiques comme l'oxyde de fer ou certains alliages (phosphore-nickel ou phosphore-cobalt). Une couche magnétique, d’une épaisseur de quelques microns ou même inférieure au micron aujourd’hui, est déposée sur un support souple ou rigide. Elle est constituée de domaines de Weiss microscopiques. Initialement l'orientation de l'aimantation de chacun de ces domaines est aléatoire et l'aimantation résultante est nulle. En présence d'un champ magnétique, suffisamment intense, l'aimantation de chaque domaine bascule pour être parallèle au champ inducteur. Lorsque celui-ci disparaît l'aimantation de chaque domaine persiste (rémanence) dans cette position, induisant une aimantation globale. Il est donc possible d'aimanter certaines zones ou cellules de la couche magnétique. Ce principe est mis en œuvre dans une tête d'écriture (fig. 10). Celle-ci est constituée par l'entrefer d'un électro-aimant. En alimentant la bobine on crée un champ magnétique au voisinage de l'entrefer, son orientation dépend du sens du courant. Ce champ traverse la couche magnétique. Les domaines de Weiss en regard de la tête prennent une aimantation parallèle au champ magnétique. Ils constituent une cellule dont l'aimantation, parallèle aux lignes de champ dans l'entrefer, a deux orientations possibles. Cette technique est donc adaptée à un codage binaire.

bobine

entrefer

couche magnétiquesupport

lignes de champ

Figure 10 Pour la lecture on peut utiliser la même tête non alimentée. Chaque cellule constitue un aimant permanent. Lorsqu'une cellule passe devant l'entrefer, par induction elle modifie le flux magnétique traversant la bobine, ce qui crée un courant. Le sens de ce courant dépend du sens de variation de l'aimantation, donc de l'information binaire stockée dans la cellule.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 202

Page 203: Sylvain tisserant architecture et technologie des ordinateurs

La densité linéaire d'enregistrement se mesure en bpi (bits per inch). Cette densité dépend de la nature de la couche magnétique, de la distance entre cette couche et la tête de lecture/écriture et de l'ouverture de l'entrefer. Une tête de lecture est sensible aux variations du flux magnétique, donc aux transitions, ou changements de sens d'aimantation. Différentes techniques d'enregistrement sont utilisées pour le codage des disques et des bandes magnétiques. Nous allons en étudier quelques-unes, illustrées par la figure 11.

0 1 0 0 0 0 01 1 1

NRZI

PE

NRZ

RZ

Figure 11 RZ (Return to Zero) On revient à zéro entre chaque bit. On sépare les cellules magnétisées par

une zone non aimantée. La valeur 1 correspond à une impulsion positive et la valeur 0 à une impulsion négative au niveau de la bobine. L'enregistrement est autosynchronisé : il n'y a pas besoin de base de temps externe pour compter tous les bits. Par contre ce codage n'est pas favorable à la densité.

NRZ (Non Return to Zero) On supprime les zones non aimantées. Il n'y a une transition, donc

une impulsion, uniquement lorsque les informations passent de 0 à 1 et de 1 à 0. On peut ainsi augmenter la densité. Cependant, comme une séquence de bits égaux engendre une impulsion seulement au début, il faut une base de temps pour compter les bits.

NRZI (NRZ Inverted) Le sens de l'aimantation ne porte plus directement l'information. Seuls les

bits à 1 provoquent une inversion de magnétisation. Il est nécessaire d'avoir une base de temps.

PE (Phase Encoding) Chaque cellule est divisée en deux parties magnétisées en sens opposé.

Il y a donc une transition au milieu de chaque cellule, même dans une séquence de bits égaux. Le sens de cette transition indique la valeur binaire de l'information. Ce codage est autosynchronisateur. Il est facile de conserver la base de temps, repérant les milieux des

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 203

Page 204: Sylvain tisserant architecture et technologie des ordinateurs

cellules, en phase avec la vitesse de défilement. Cette technique est cependant limitée par la fréquence des transitions.

GCR (Group Code Recording) Pour atteindre des densités supérieures, on reprend le principe

du NRZI en supprimant les séquences de zéros pour faciliter la synchronisation de la base de temps. Pour cela on utilise 5 bits pour coder des groupes de 4 bits selon la table 1. Chaque groupe de 4 bits est codé avant d'être enregistré, en utilisant la méthode NRZI, et décodé à la lecture. Avec ce code il est impossible de trouver plus de deux zéros consécutifs. Dans ces conditions il plus facile de recadrer en permanence la base de temps sur la fréquence de défilement des informations.

Donnée (4 bits) Code (5 bits) Donnée (4 bits) Code (5 bits)

0000 11001 1000 11010 0001 11011 1001 01001 0010 10010 1010 01010 0011 10011 1011 01011 0100 11101 1100 11110 0101 10101 1101 01101 0110 10110 1110 01110 0111 10111 1111 01111

Table 1

IX.4.b Disques durs Un disque dur constitue la mémoire de masse non volatile d'un ordinateur. Le premier disque a été développé en 1954 par IBM.

Une unité de disques magnétiques est généralement constituée de plusieurs disques ou plateaux tournant à la même vitesse (plusieurs milliers de tours par minute). Un plateau est constitué d'un substrat non magnétique, usiné et poli. On utilise soit l'aluminium, soit le verre ou la céramique plus résistants et plus fins. Les deux faces d'un plateau sont recouvertes d'une couche magnétisable (oxyde métallique ou métal). Entre ces plateaux se trouvent les têtes de lecture/écriture montées sur un même bras mobile (fig. 12). Les disques durs utilisent des têtes ultra-légères, qui grâce à leur profil aérodynamique flottent sur un coussin d'air. L'altitude de vol varie entre 0.25 et 2.5 µm. Comme le montre la figure 13, où nous n'avons pas pu visualiser un cheveu de diamètre 50 à 100 µm, cela impose de grandes contraintes sur la planéité des surfaces et leur propreté. Pour cela les disques durs doivent placés dans des boîtiers hermétiques, exempt de poussières (technologie Winchester, car mise au point pour l’IBM 3030, calibre de la carabine Winchester). A l'arrêt les têtes se posent sur une partie du plateau préparée à cet effet ne contenant pas de données. Le ralentissement de la rotation du disque, avec diminution progressive du film d’air entraîné, permet un atterrissage en douceur.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 204

Page 205: Sylvain tisserant architecture et technologie des ordinateurs

plateau

axe de rotation

tête de lecture et écriture

Figure 12

poussière20 à 30µm

trace de doigt5µmfumée

5µmtête de lecture

altitude de vol couche d'oxydemagnétique

4µm2µm

Figure 13

Les surfaces de chaque disque sont structurées (fig. 14) en pistes (track) : cercles concentriques centrés sur l'axe de rotation. Un disque est également divisé en segments, ou "parts de gâteau" d'angle fixe. L'intersection d'une piste et d'un segment est appelée secteur. La taille des secteurs est généralement de 512 octets. Le secteur représente l'unité élémentaire d'accès d'un

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 205

Page 206: Sylvain tisserant architecture et technologie des ordinateurs

disque. Chaque secteur est séparé du suivant par une petite zone non utilisée qui permet de repérer les secteurs et de synchroniser les signaux de commande. L'ensemble des pistes de tous les plateaux à un rayon donné forment un cylindre. Comme les têtes de lecture/écriture sont solidaires, les secteurs d'un cylindre peuvent être accédés simultanément. Le bras supportant ces têtes pivote autour d'un axe et sa position est définie par une bobine électromagnétique. Ce système permet un positionnement rapide et précis de la tête sur la piste. Ce positionnement est par ailleurs asservi sur des repères placés sur le disque.

piste

segment

secteur

Figure 14

La surface d'un disque vierge est uniforme, aucun repérage absolu n'est possible. Avant de pouvoir l'utiliser il faut réaliser un premier formatage dit de bas niveau, c'est-à-dire mettre en place sur la surface des repères permettant de retrouver pistes et secteurs. Chaque secteur est généralement structuré en deux zones : un entête permettant son repérage et les données. Cette structure dépend de l’architecture, on peut trouver :

- un intervalle de secteur : 10-20 octets à 0 ; - un label précédé d’un marqueur : adresse du secteur (numéros de disque, de face, de

cylindre et de secteur) ; - un code détecteur d’erreur ; - une zone de synchronisation : permet de passer de la lecture d’adresse à l’écriture des

données, sert également au recadrage des signaux d’horloge ; - un marqueur de données ; - la zone de données.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 206

Page 207: Sylvain tisserant architecture et technologie des ordinateurs

Les données sont écrites et lues par secteurs. Pour identifier un bloc de données il faut spécifier le numéro de l'unité de disques, la tête (donc le plateau et la face), la piste (ou le cylindre) et le secteur. En fait la capacité des disques durs et la taille moyenne des fichiers ont augmenté de façon telle qu'il n'est plus possible d'adresser individuellement chaque secteur. Un disque de 1 Go contient 221 secteurs. Ceux-ci sont groupés en grappes ou clusters. Cette organisation, la taille des grappes et l'adressage logique des secteurs et des clusters dépendent du système d'exploitation. Cela requiert un formatage logique, avec préparation de vecteurs d'état, de tables d'allocation des fichiers, etc. Un vecteur d'état permet de savoir si un secteur ou cluster est utilisable, utilisé ou libre. La capacité d'un disque est exprimée en multiples de 1024 octets. La table suivante résume la valeur des préfixes utilisés pour exprimer les capacités des disques. J'ai quelque peu anticipé certains multiples ne servent pas encore même pour les sauvegardes.

Symbole Préfixe Capacité k kilo 210 = 1024 M méga 220 = (1024)2

G giga 230 = (1024)3

T téra 240 = (1024)4

P péta 250 = (1024)5

E exa 260 = (1024)6

Z zetta 270 = (1024)7

Y yotta 280 = (1024)8

Table 2

L'accès aux données sur un disque dur peut se décomposer en trois étapes :

- positionnement des têtes au niveau du cylindre; - passage du secteur devant la tête de lecture et repérage; - transfert des données.

Un disque est dit à accès semi-séquentiel : accès direct à la piste avec une constante de temps liée à la mécanique, puis accès séquentiel au secteur dans la piste. Le temps de déplacement de la tête est appelé temps de recherche. Il dépend de l'amplitude du mouvement du bras (passage à un cylindre voisin ou traversée complète du disque) et de l'inertie de celui-ci. Une fois la tête positionnée, le temps d'accès au secteur sur la piste est appelé temps de latence. Celui-ci dépend des positions initiales respectives de la tête et du secteur, en moyenne il faut parcourir la moitié de la piste. Il dépend également de la vitesse de rotation des plateaux. Ensuite le taux de transfert des données est caractérisé par débit. Il existe deux configurations possibles des pistes. Elles peuvent contenir toutes le même nombre de secteurs (fig. 14). Dans ce cas, comme la vitesse de rotation est constante, la densité d'information varie en fonction du rayon de la piste, mais le débit est constant. Une autre organisation consiste à garder la densité d'information à peu près constante. Dans ce cas le

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 207

Page 208: Sylvain tisserant architecture et technologie des ordinateurs

nombre de secteurs par piste varie en fonction du rayon. Le disque est divisé en zones, le nombre de secteurs par piste étant identique à l’intérieur d’une zone. La capacité du disque est alors accrue et le débit dépend également du rayon. Il est plus important sur le bord des plateau. Le système doit donc chercher à installer les fichiers d'utilisation fréquente à cet endroit.

IX.4.c Disquettes Dans leur principe les disquettes fonctionnent comme les disques durs. Amovibles les disquettes sont principalement utilisées dans les petits systèmes. Les premières disquettes avaient un diamètre de 8 pouces, puis sont apparues les disquettes 5"1/4 et enfin 3"1/2. Les disquettes sont enfermées dans une enveloppe souple ou rigide dont les faces internes sont couvertes d'un revêtement limitant le frottement.

Outre qu'une disquette est souple, la différence principale avec un disque dur réside dans la tête de lecture/écriture. Tout d'abord cette tête est en contact avec la surface magnétique, ce qui limite la vitesse de rotation : 300 tours/minute pour les disquettes 3" 1/2. De plus le positionnement de la tête est obtenu par une vis actionnée par un moteur pas à pas, sans asservissement. Ce système nécessite une marge de sécurité entre les pistes, ce qui limite la densité : 135 tpi (tracks per inch) pour les classiques disquettes de 1.44 Mo. Cette capacité est de moins en moins adaptée à la taille des fichiers. Citons deux techniques employées pour augmenter la capacité et le débit dans d'autres types des supports magnétiques amovibles. La première consiste à faire flotter le disque souple entre les deux têtes de lecture/écriture (effet Bernoulli). Cela permet une plus grande vitesse de rotation, donc un débit plus élevé. Une autre consiste à utiliser un faisceau laser pour asservir le déplacement de la tête. Le disque dispose des pistes optiques de référence. Ce système permet un positionnement très précis de la tête, donc une plus grande densité de pistes.

IX.4.d Bandes et cartouches magnétiques Dans les bandes ou cartouches magnétiques le support de la couche magnétisable est constitué par un ruban souple comparable à ce qui est utilisé pour les enregistrements audio ou vidéo. Une bande est logiquement divisée en pistes parallèles, par exemple neuf pistes (fig. 15). Les octets sont enregistrés transversalement : 8 bits sur huit pistes. La neuvième piste est utilisée pour le bit de parité. Les données sont enregistrées par blocs. A la fin d'un bloc on peut placer 9 bits supplémentaires, chacun représentant la parité de sa piste dans le bloc. Si une erreur se produit pour un seul bit, celle-ci induit deux erreurs de parité : dans la piste et l'octet. Cette méthode permet de repérer et d'identifier le bit en erreur. Une correction est alors possible. D'accès séquentiel, ce sont des supports de données relativement lents. Par contre ils sont très économiques. Sous forme de cassettes ou cartouches elles sont d'un usage plus aisé. Il est en particulier possible dans les grands systèmes d'utiliser des robots pour installer les cartouches dans les lecteurs.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 208

Page 209: Sylvain tisserant architecture et technologie des ordinateurs

9 pistes

1 octet + 1 bit de parité9 bits de parité

1 bloc d'enregitrement

Figure 15 Cependant les enregistrements magnétiques s'altèrent avec le temps. Il faut les réécrire tous les trois ou cinq ans. La durée de vie des bandes est également limitée. Il faut les remplacer tous les dix ou quinze ans. Dans un grand centre de calcul cela représente beaucoup de travail et d'argent. IX.5 Disques optiques numériques Les disques compacts sont des objets standardisés tant au niveau de leurs caractéristiques physiques que de leur format logique. Cette standardisation qui assure une compatibilité dans un très vaste domaine est certainement une des raisons du succès de ce support. La normalisation initiale, correspondant au disque compact audio (CD-A), est décrite dans le "Livre Rouge" rédigé en 1982 par Sony et Philips. Nous commençons donc notre étude par ce type de CD.

IX.5.a Format physique Un disque compact a un diamètre externe de 120 mm pour une épaisseur de 1.2 mm. Il est percé d'un trou central de 15 mm. Il est constitué de trois couches. Sur un support en ploycarbonate (plastique transparent résistant ayant un indice de réfraction de 1.55) est déposée une fine couche réfléchissante d'aluminium. Cette couche est protégée des rayures et de l'oxydation par une laque protectrice, sur laquelle peut être imprimée une étiquette. Les informations sont imprimées dans la couche métallique sous forme de cuvettes (pits), d'une profondeur de 0.12 µm, gravées le long d'une spirale, située dans une zone de diamètre compris entre 46 et 117 mm. Cette zone est divisée en trois régions concentriques : un en-tête (lead-in) de 2 mm de large, suivi des données sur une largeur de 33 mm au maximum puis d'une plage de fin (lead-out). Les informations sont arrangées du centre vers l'extérieur. Le pas entre spires est de 1.6 µm, ce qui correspond à une densité de 16000 tpi. La longueur totale de la spirale (22188 spires) est d'environ 5.6 km, pour une longueur utile (données) de 5.38 km. La

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 209

Page 210: Sylvain tisserant architecture et technologie des ordinateurs

largeur des creux est de 0.6 µm. La surface vierge qui séparent deux cuvettes consécutives est appelée méplat (land). La spirale apparaît donc comme une alternance de créneaux. La longueur de chaque créneau (cuvette ou méplat) est comprise entre 0.833 µm et 3.054 µm.

Ø15

4650

116

Données

plage de fin

en-tête

117120

Figure 16

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 210

Page 211: Sylvain tisserant architecture et technologie des ordinateurs

IX.5.b Dispositif de lecture La lecture des données se fait au moyen d'un laser à semi-conducteur en arséniure de gallium (AsGa) d'une longueur d'onde de 780 nm (infrarouge). La lumière émise par ce laser traverse le substrat en polycarbonate puis se réfléchit sur la couche d'aluminium. Le rayon réfléchi est ensuite guidé par un miroir semi-transparent vers une photodiode. Le faisceau laser est focalisé en une tache d'environ 1.1 µm de diamètre. Sur une surface vierge (méplat) la lumière est totalement réfléchie et la photodiode reçoit alors au moins 70 % de la lumière émise. Par contre lorsque l'image du laser chevauche une cuvette, la lumière réfléchie au fond de la cuvette parcourt une distance légèrement plus longue que la lumière réfléchie sur la surface extérieure. La profondeur des cuvettes est telle que la différence de chemin est égale à une demie longueur d'onde. Comme la lumière émise par un laser est cohérente, il y alors interférence destructive. En pratique il n'y a pas extinction totale, mais la spécification impose une quantité de lumière réfléchie dans ces zones inférieure à 28 % de la lumière émise.

diode laser

photodiodemiroir semi-transparent

polycarbonate

aluminiumlaque

cuvette méplat

Figure 17

Le principe de la lecture est donc assez simple, mais il faut ajouter des systèmes d'asservissement pour conserver l'alignement de la tête de lecture le long de la spirale et la focalisation au niveau de la couche réfléchissante (± 2 µm). La tête n'étant pas en contact avec le disque il n'y a peu d'usure.

Contrairement à un disque dur, la vitesse de rotation d'un disque compact est variable de

façon à ce que la vitesse linéaire de défilement de la spirale devant la tête de lecture soit constante (CLV : Constant Linear Velocity). La vitesse de lecture pour un CD audio est de 1.2 m s-1. La vitesse angulaire varie donc de 200 à 460 tours par minute selon la position de la tête le long de la spirale. La durée d'enregistrement maximum est d'environ 74 minutes. Le temps d'accès est plus long que pour un disque dur, car il faut positionner la tête de lecture d'inertie

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 211

Page 212: Sylvain tisserant architecture et technologie des ordinateurs

mécanique plus grande et il faut accélérer ou ralentir la rotation du disque pour ajuster la vitesse linéaire de défilement.

0,6

1,6

cuvetteméplat

image laser

1,1

Figure 18

IX.5.c Codage de l'information Contrairement à ce qu'on pourrait penser les cuvettes et les méplats ne sont pas directement associés aux deux valeurs logiques "0" et "1". En fait la valeur logique "1" est définie par une transition de l'intensité lumineuse détectée. Cela correspond donc au passage d'un méplat à une cuvette et vice-versa. La longueur des cuvettes et des zones vierges permet ensuite de compter le nombre de zéros. Cependant une détection efficace de deux transitions consécutives nécessite un créneau d'une longueur minimale. Il est donc impossible de coder deux "1" consécutifs. En pratique il faut au moins deux "0" entre deux "1". L'horloge est synchronisée à chaque transition. Il faut éviter d'avoir des séries de "0" trop longues. Il y aurait alors un risque de perdre la base de temps, et donc de faire une erreur dans le comptage des "0". La limitation adoptée est d'au plus dix "0" entre deux "1". On associe donc à chaque créneau (pit ou land) une séquence binaire débutant par un "1" et comptant entre 3 et 11 bits. La longueur d'un créneau est d'environ 0.278 µm par bit.

Pour tenir compte de ces contraintes on est amené à utiliser 14 bits pour coder un octet. On dénombre en effet 267 combinaisons de 14 bits pour lesquelles on trouve au moins deux et au plus dix "0" entre deux "1". Ce codage est appelé E.F.M. pour Eight to Fourteen Modulation. La table de correspondance a été choisie de manière à minimiser le nombre de portes logiques nécessaires à la réalisation du transcodeur qui doit être intégré dans tout lecteur de disque compact. Lors de la concaténation de deux codes de 14 bits, il est encore possible de trouver deux "1" consécutifs ou une série de plus de dix "0". Pour éviter cette difficulté, on intercale 3 bits de fusion tous les 14 bits. Il faut donc au total 17 bits pour représenter un octet. Pour améliorer le rapport signal/bruit on cherche à faire en sorte que les longueurs cumulées des creux et des bosses soient en permanence presque égales. C'est un des rôles des bits de fusion.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 212

Page 213: Sylvain tisserant architecture et technologie des ordinateurs

Le système de codage E.F.M. est destiné à rendre le système de lecture le plus tolérant possible à divers défauts techniques : trou excentré, disque voilé, laser mal focalisé, profondeur des creux, épaisseur du disque, etc. Il subsiste cependant d'autres sources d'erreurs. Ce peut être de microscopiques bulles d'air ou poussières piégées dans le polycarbonate pendant la fabrication du disque, ou des rayures, salissures et autres empreintes de doigts sur le disque. La spécification exige qu'il y ait moins de 250 erreurs de lecture par seconde. Ce taux d'erreur est trop important pour assurer une bonne qualité de son. Pour éliminer ces erreurs on fait appel à un code de détection et de correction d'erreurs : le code Reed Solomon entrelacé croisé (CIRC : Cross Interleaved Reed Solomon Code). Cette technique permet d'atteindre un taux d'erreurs de 10-8 sur les données utiles.

1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00000 1 1 1 1

Figure 19 Sur un CD audio les données sont groupées en trames. Une trame comprend 24 octets utiles auxquels il faut ajouter 8 octets pour le code de détection et de correction des erreurs. On ajoute également un octet de contrôle. Chacun de ces 33 octets est codé avec 14 bits. Une trame débute par deux séquences de synchronisation identiques de 11 bits ("1" suivi de dix "0"), suivies par 5 bits de fusion. Cette configuration ne peut se trouver dans les données car elle correspond à une des onze combinaisons de 14 bits non utilisées par le codage E.F.M.. Une trame comprend donc 588 bits.

1 trame Synchronisation 1 octet de contrôle 24 octets de données 8 octets de détection et correction d'erreurs

27 bits 1 x 17 bits

24 x 17 bits 8 x 17 bits

Total 588 bits

Table 3 L'unité d'enregistrement sur un CD est le secteur qui regroupe 98 trames, soient 57624 bits. Une seconde d'enregistrement correspond à 75 secteurs.

1 secteur 98 trames 57624 bits 2352 octets utiles

1 seconde 75 secteurs 4.3218 106 bits 176400 octets utiles

Table 4

Le son sur un CD est échantillonné sur 16 bits et sur deux canaux (stéréo). Une seconde d'enregistrement correspond donc à 44100 échantillons. La fréquence d'échantillonnage est donc

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 213

Page 214: Sylvain tisserant architecture et technologie des ordinateurs

de 44.1 kHz. Le débit global de lecture est de 4.32 Gb.s-1, pour un débit utile de 172 ko.s-1. La durée maximale d'enregistrement de 74 minutes correspond à 747 Mo utiles. L'adressage d'un secteur sur un CD se fait sous la forme : minute:seconde:secteur. Un CD audio peut être divisé en pistes (jusqu'à 99). L'adressage peut être absolu (depuis le début de la spirale) ou relatif (depuis le début de la piste).

IX.5.d Disque compact en informatique Le disque compact est sorti peu de temps après l'IBM PC-XT qui était alors équipé d'un disque dur de 10 Mo. Il est vite apparu que les disques compacts pouvaient servir de support à des données informatiques. Cela nécessitait cependant une réduction importante du taux d'erreurs et un repérage plus précis des secteurs. C'est pourquoi le format des secteurs a été revu et précisé dans le Livre Jaune rédigé par Philips et Sony en 1984.

Dans un CD-ROM on distingue deux formats pour les secteurs. La structure des secteurs décrite pour les disques audio, à savoir 98 trames de 588 bits, est conservée. Par contre l'utilisation des 2352 octets disponibles est modifiée. Le premier format, nommé CD-ROM Mode 1, est prévu pour les données informatiques. Celles-ci représentent 2048 octets, quantité adaptée à l'adressage binaire. Ce mode contient un niveau supplémentaire de détection et de correction d'erreurs en couche qui nécessite 4 octets pour la détection (EDC : Error Detection Code) et 276 octets pour la correction (ECC : Error Correction Code). Cette technique permet d'obtenir un taux d'erreur de 10-12. Huit octets sont laissés libres entre les octets de détection et les octets de correction. Pour faciliter le repérage et l'adressage des secteurs ceux-ci débutent par 12 octets de synchronisation suivis de 4 octets d'en-tête (trois octets pour l'adressage minute:seconde:secteur et un octet pour le mode).

2048 octets de données

276

octe

tsEC

C

12 o

ctet

sSY

NC

4 oc

tets

Hea

der

4 oc

tets

EDC

8 oc

tets

libre

s

CD-ROM / Mode 1

12 o

ctet

sSY

NC

4 oc

tets

Hea

der

2336 octets de données

CD-ROM / Mode 2

2352 octets

Figure 20

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 214

Page 215: Sylvain tisserant architecture et technologie des ordinateurs

Ce format correspond à un débit pour les données utiles de 150 ko.s-1. et une capacité utile de 650 Mo. Il existe un second format (CD-ROM Mode 2) qui n'utilise pas de détection d'erreurs. Il permet d'utiliser 2336 octets par secteur, pour un débit de 172 ko.s-1. Ce format convient aux données compressées audio ou vidéo. Si des données sonores de haute qualité sont nécessaires les formats CD-A et CD-ROM peuvent être combinées. Sur un CD en mode mixte, la première piste contient les données informatiques. Elle est suivie par une ou plusieurs pistes audio. Les livres rouge et jaune n'autorisent pas le mélange de secteurs de types différents sur une même piste. Cela s'avère une limitation majeure pour des applications multimédia qui manipulent simultanément du texte, du son et de la vidéo. La tête de lecture est alors obligée de se déplacer en permanence pour alimenter les divers flux. Le format CD-ROM XA a été introduit en 1989 par Philips, Sony et Microsoft pour palier cette limitation. Il permet l'entrelacement de secteurs de types différents sur une même piste. A côté de cet apport, le format des secteurs est légèrement modifié. Il utilise les huit octets laissés libres par le format CD-ROM. Les deux formats CD-ROM XA sont dénommés Forme 1 et Forme 2. Ils sont résumés dans la figure suivante.

2048 octets de données

276

octe

tsEC

C

12 o

ctet

sSY

NC

4 oc

tets

Hea

der

4 oc

tets

EDC

8 oc

tets

Subh

ead.

CD-ROM XA / Forme 1

12 o

ctet

sSY

NC

4 oc

tets

Hea

der

2324 octets de données

2352 octets

8 oc

tets

Subh

ead.

4 oc

tets

EDC

CD-ROM XA / Forme 2

Figure 21 Si la vitesse de lecture des disques audio est fixée par la fréquence d'échantillonnage, il n'y a aucune contrainte pour les données informatiques. Cela permet d'accélérer le débit de transfert, qui est généralement exprimé comme un multiple de 150 ko.s-1 (nX). Il est également possible de fonctionner à vitesse de rotation constante (CAV : Constant Angular Velocity).

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 215

Page 216: Sylvain tisserant architecture et technologie des ordinateurs

IX.5.e Fabrication d'un CD La fabrication d'un CD-ROM commence par la mise en forme des données : découpage en secteurs, addition des octets de synchronisation, contrôle, détection et correction d'erreurs, codage E.F.M., etc. Ensuite on prépare une première matrice en verre. Une très fine couche de résine photosensible est déposée sur plaque de verre parfaitement polie. Cette couche est impressionnée par un laser qui crée une image des cuvettes. Après développement, la résine non polymérisée est retirée. Le négatif des cuvettes apparaît alors sur la plaque de verre sous forme de bosses. Une très fine couche d'argent est alors vaporisée sur la face photosensible. Du nickel est déposé par galvanisation au-dessus de cette couche argentée. Après séparation de la plaque de verre on obtient une première copie du disque appelé père. Ce père peut alors être employé pour estamper en série les disques en polycarbonate. Cependant pour éviter toute détérioration de l'original on effectue une empreinte dite mère, qui sert à la fabrication de plusieurs fils. Père ou fils servent au moulage du polycarbonate par injection ou pression. Les disques de polycarbonate sont ensuite recouverts d'une fine couche d'aluminium, puis d'une laque. Ce procédé permet une production rapide et à faible coût unitaire pour des grandes séries. La fabrication du père et des fils est en effet longue, délicate et coûteuse. Ce n'est donc rentable que si ces frais sont répartis sur un grand nombre de disques produits. Cette solution n'est pas adaptée aux petites série ou au développement de prototypes. On fait alors appel aux disques compacts enregistrables.

IX.5.f Disque compact enregistrable Il existe deux types de disques optiques enregistrables. Commençons par le disque optique enregistrable une seule fois : CD-R (Recordable). Le contenu de ce type de disque peut être enregistré une fois, il fonctionne ensuite comme CD-ROM classique en lecture uniquement. On parle en anglais de disque WORM : Write Once/Read Many. Un disque compact enregistrable se compose de quatre couches. Entre le substrat en polycarbonate et la couche réfléchissante, qui est ici en argent ou en or, se trouve un colorant organique photosensible (cyanine, phtalocynanine, AZO, Formazan). La couche réfléchissante est toujours protégée par une laque.

L'écriture des données est réalisée par un laser puissant, qui permet de chauffer localement le colorant. Au-dessus d'une température critique, il se produit une réaction chimique qui rend le colorant opaque. Le codage des données est identique à celui d'un CD-ROM. A la lecture les zones "brûlées" absorbent la lumière, alors qu'ailleurs la lumière peut traverser le colorant pour être réfléchie. Le signal lumineux renvoyé vers la photodiode est donc comparable à celui d'un disque compact. Un CD-R peut être utilisé dans un lecteur de CD classique. La puissance du laser à l'écriture dépend de nombreux paramètres : type de colorant, température, hygrométrie, vitesse de défilement, etc. Au centre du disque, entre le trou et la plage de début, est

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 216

Page 217: Sylvain tisserant architecture et technologie des ordinateurs

définie une zone (PCA : Power Calibration Area) qui permet le calibrage du faisceau laser. Cette zone contient un compteur du nombre de calibrages réalisés. Ce compteur est limité à 99. Sans repère il serait très difficile, dans la phase d'écriture, de suivre une spirale au pas de 1.6 µm. C'est pourquoi un marquage de la spirale est réalisé à la fabrication du disque au moyen de cuvettes gravées dans la couche réfléchissante. Ces cuvettes sont réparties de manière à permettre également un asservissement précis de la vitesse de rotation du disque et de la puissance du laser, la fréquence de défilement devant être de 22.05 kHz. La stabilité des colorants, qui doivent par exemple résister aux ultraviolets de la lumière solaire, garantit une durée de vie d'au moins 30 ans des disques enregistrables. Par rapport aux bandes magnétiques, ils autorisent un accès aléatoire aux données. Ces deux arguments font des disques compacts enregistrables un bon support pour l'archivage. Le marquage du colorant est irréversible, il n'est donc pas possible de modifier le contenu du disque. Ne pouvoir écrire les données qu'une fois sur un disque peut être une limitation pour certaines applications. C'est ce qui a conduit au disque réinscriptible : CD-RW (ReWritable).

IX.5.g Disque compact réinscriptible La structure d'un disque compact réinscriptible comporte six couches. Le colorant est remplacé par un alliage d'argent, indium, antimoine et tellure (Ag-In-Sb-Te), pris en sandwich entre deux couches de diélectrique. Dans un disque vierge, l'alliage est dans une forme cristalline. Il réfléchit alors en partie la lumière. L'enregistrement se fait au moyen d'un laser puissant qui chauffe localement l'alliage pour le porter au-delà de sa température de fusion (entre 500 et 700°C). Si le refroidissement est rapide les atomes n'ont pas le temps de s'organiser et l'alliage revient à l'état solide dans un état amorphe. Il absorbe et diffuse alors la lumière. La lecture d'un CD-RW se fait ensuite avec un laser de faible puissance comme pour un CD classique. Cependant la faible quantité de lumière réfléchie (15-25 % pour les lands) nécessite une photodiode plus sensible. Si on chauffe suffisamment longtemps une zone amorphe à une température un peu inférieure à la température de fusion, les atomes ont la possibilité de se réarranger ce qui permet de retrouver une structure cristalline après refroidissement. Il est donc possible d'effacer un enregistrement. Cette technique d'enregistrement est dit à changement de phase. Ces disques, comme les disques enregistrables une fois, sont fabriqués avec une spirale de guidage pour la phase d'écriture. La couche d'enregistrement fabriquée par pression est initialement amorphe. Le disque subit ensuite un traitement thermique pour la faire passer en phase cristalline. Ainsi chaque disque CD-RW est-il vendu vierge.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 217

Page 218: Sylvain tisserant architecture et technologie des ordinateurs

IX.5.h Disque optique numérique haute densité Alors que le disque compact a été initié comme support audio, le disque haute densité avait pour objectif initial la vidéo. Les études lancées par les industriels avaient conduit à deux formats concurrents : le MMCD (Multi Media Compact Disc) et le SDD (Super Density Disc). Lorsqu'elle s'est intéressée à ce type de support, l'industrie informatique a imposé le choix d'un seul format. C'est ainsi qu'en 1995 le Digital Versatile Disc (DVD) a remplacé le Digital Video Disc. Les dimensions d'un DVD sont identiques à celles d'un CD : 120 mm de diamètre externe, 1.2 mm d'épaisseur et percé d'un trou de 15 mm de diamètre. La capacité a été accrue en augmentant la densité et le nombre de couches. Le principe de lecture optique reste le même avec des améliorations. L'utilisation d'un laser avec une plus petite longueur d'onde (635 ou 650 nm, rouge) permet de réduire la taille des motifs à détecter. En outre, les améliorations de l'optique autorisent une plus grande ouverture numérique (0.6 contre 0.45 pour le CD) ce qui permet de réduire la taille l'image du faisceau laser dans le plan de focalisation. Les créneaux peuvent donc être réduits en largeur et longueur et les spires peuvent être plus serrées. L'expérience acquise avec les disques compacts, en particulier au niveau de la focalisation et de l'asservissement du suivi de piste, a également permis de réduire les marges de sécurité définies au début de leur développement. La lecture d'un DVD se fait avec une vitesse linéaire constante 3.49 m.s-1. Ces améliorations techniques permettent une densité d'information brute environ quatre fois et demie plus grande, avec un pas des spires de 0.74 µm et une longueur minimale de créneau de 0.4 µm :

5.4400.0833.0

74.06.1G1 =×=

D'autre part, le DVD utilise la capacité d'un faisceau lumineux de traverser plusieurs

surfaces semi-transparentes et d'être peu influencé par des perturbations hors du point de focalisation. Ces propriétés, associées à l'utilisation de photodiodes plus sensibles, permettent l'utilisation de deux couches de réflexion superposées. La première couche est semi-réfléchissante, la seconde l'est totalement. Le faisceau laser est lui focalisé sur l'une ou l'autre couche. Cela nécessite une épaisseur maximum du substrat traversé par le faisceau inférieure à 0.6 mm. L'épaisseur de 1.2 mm est obtenue en collant dos à dos deux disques de 0.6 mm. Les deux faces d'un DVD peuvent porter de l'information, éventuellement en deux couches. Les DVD existent en quatre versions : mono-face / mono-couche, mono-face / bi-couche, bi-face / nono-couche ou bi-face / bi-couche. La densité de la seconde couche, plus profonde, est légèrement inférieure. Le pas des spires est de 0.80 µm et la longueur minimale des créneaux est de 0.44 µm. La lecture d'un DVD se fait avec une vitesse linéaire constante 3.84 m.s-1, de manière à conserver le même débit de lecture. Dans un DVD vidéo la lecture de la première couche s’effectue de l’intérieur vers l’extérieur du disque, et en sens inverse pour la seconde couche. Cela évite une interruption du flux de données qui serait visible au cours de la lecture d’un film. Ce n’est pas nécessairement le cas pour les DVD-ROM.

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 218

Page 219: Sylvain tisserant architecture et technologie des ordinateurs

ID (4) IDE (2) CPR (6)

EDC (4)

données (160)

données (172)

données (172)

données (168)

172 octets

12 ra

ngée

s

Figure 22 Un autre gain a été obtenu au niveau du codage de l'information. Le codage d'un octet sur un CD nécessite 17 bits (14 bits E.F.M. + 3 bits de fusion). Sur un DVD on n'utilise que 16 bits par octet. Par ailleurs les codes de détection et de correction d'erreurs se sont développés depuis la conception du CD-A. De même la puissance des contrôleurs embarqués chargés de la mise en œuvre de ces codes s'est nettement accrue. Il a donc été possible d'augmenter la fiabilité des données d'un ordre de grandeur en réduisant le nombre d'octets nécessaires à la synchronisation, au repérage, ainsi qu' à la détection et à la correction des erreurs. Dans une trame de DVD, illustrée par la figure 22, les 2048 octets utiles sont accompagnés de 10 octets de gestion et 6 octets de détection d’erreurs. Un secteur DVD regroupe 16 trames avec 2080 et 2752 octets de détection et correction d’erreurs. Un secteur, qui correspond donc à 32 ko utiles, nécessite donc 605696 bits sur le DVD. Nous avons vu que sur un CD un secteur correspond à 2048 octets utiles et occupe 57624 bits sur le disque. Cette nouvelle organisation logique permet donc un gain de :

5.132605696257624G 2 ==

Ces gains permet d’atteindre les capacités suivantes pour les diverses déclinaisons du DVD :

DVD-ROM CapacitéMono-face et mono-couche 4.7 Go

Mono-face et bi-couche 8.5 Go Bi-face et mono-couche 9.4 Go

Bi-face et bi-couche 17 Go

Table 5

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 219

Page 220: Sylvain tisserant architecture et technologie des ordinateurs

S. Tisserant – ESIL – Architecture et Technologie des Ordinateurs - 2003 220

Certains des développements en cours pour augmenter ces capacités portent sur une nouvelle réduction de la longueur d’onde du laser, avec par exemple un laser bleu (405 nm). On parle de disques HD-ROM à 600 Go.