Download Architectures logicielles et matérielles : Cours, études de cas et exercices corrigés PDF

TitleArchitectures logicielles et matérielles : Cours, études de cas et exercices corrigés
PublisherDunod
ISBN 139782100048939
Author
LanguageEnglish
File Size3.2 MB
Total Pages587
Table of Contents
                            Introduction
Qu'est-ce qu'un ordinateur ?
	Notion d'information
	L'ordinateur : une machine qui exécute
	Où sont le matériel et le logiciel ?
	Fonctionnalités des ordinateurs
	Plan du livre
I Outils de base de l'algorithmique logicielle   et matérielle
	Algèbre de Boole et fonctions booléennes
		Algèbre de Boole
		Fonctions booléennes
		Représentation des fonctions booléennes
		Manipulation de représentations de fonctions booléennes
		Exercices
	Représentation des grandeurs
		Notion de codage d'informations
		Les naturels
		Les relatifs
		Lien entre l'arithmétique et les booléens
		Les caractères
		Les nombres réels, la virgule flottante
		Exercices
	Représentation des traitements et des données : langage d'actions
		Un langage d'actions
		Représentation des données en mémoire
		Traduction des affectations générales en accès au tableau MEM
		Utilisation des pointeurs et gestion dynamique de la mémoire
		Piles, files et traitements associés
		Exercices
	Représentation des traitements et des données : machines séquentielles
		Machines séquentielles simples
		Machines séquentielles avec actions
	Temps, données temporelles et synchronisation
		Interface entre un dispositif informatique et un environnement physique
		Signaux logiques et représentation par des chronogrammes
		Problèmes de synchronisation
		Un exemple : la machine à café
II Techniques de l'algorithmique matérielle
	De l'électron aux dispositifs logiques
		Phénomènes à l'échelle atomique
		Phénomènes à l'échelle électrique
		Phénomènes à l'échelle logique
		Circuits logiques
		Fabrication des dispositifs
		Exercices
	Circuits combinatoires
		Notion de circuit combinatoire
		Assemblage de blocs de base...
		Algorithmique câblée : conception logique
		Etude de cas
		Exercices
	Eléments de mémorisation
		Points de mémorisation de bits : bascules et registres
		La mémoire : organisation matricielle des points de mémorisation
		Réalisation des mémoires statiques
		Optimisations et techniques particulières
	Circuits séquentiels
		Notion de circuit séquentiel
		Synthèse des automates décrits par leur graphe
		Synthèse des circuits séquentiels par flots de données
		Exercices
	Conception de circuits séquentiels par séparation du contrôle et des opérations
		Principe général
		Notion de partie opérative type
		Partie contrôle
		Etudes de cas
		Exercices
III Techniques de l'algorithmique logicielle
	Le langage machine et le langage d'assemblage
		Le langage machine
		Le langage d'assemblage
		Traduction du langage d'assemblage en langage machine
		Un exemple de programme
		Exercices
	Traduction des langages à structure de blocs en langage d'assemblage
		Cas des programmes à un seul bloc
		Cas des programmes à plusieurs blocs
		Traduction en langage d'assemblage : solutions globales
		Exercices
IV A la charnière du logiciel et du matériel...
	Le processeur : l'interprète câblé du langage machine
		Les principes de réalisation
		Exemple : une machine à 5 instructions
		Une réalisation du processeur
		Critique et amélioration de la solution
		Extensions du processeur
		Exercices
V Architecture d'un système matériel   et logiciel simple
	Un système matériel et logiciel simple
	Relations entre un processeur et de la mémoire
		Le bus mémoire
		Utilisation de plusieurs circuits de mémoire
		Accès à des données de tailles différentes
		Exercices
	Circuits d'entrées/sorties
		Notion d'entrées/sorties
		Synchronisation entre le processeur et un périphérique
		Connexion d'organes périphériques
		Programmation d'une sortie
		Programmation d'une entrée
		Optimisation des entrées/sorties groupées
		Exercices
	Pilotes de périphériques
		Structure d'un pilote de périphérique
		Pilote pour un clavier
		Pilote pour un disque
		Pour aller plus loin...
	Vie des programmes
		Interprétation et compilation
		Compilation séparée et code translatable
		Format des fichiers objets translatables et édition de liens
	Système de gestion de fichiers
		Situation du système de gestion de fichiers
		Structure des données et influence sur l'implantation
		Implantation dispersée sur un disque
		Noms externes et autres informations attachées aux fichiers
		Etude de quelques fonctions du système de gestion de fichiers
	Démarrage du système, langage de commandes et interprète
		Démarrage du système
		Mécanisme de base : le chargeur/lanceur
		Programmation de l'interprète de commandes
		Fonctions évoluées des interprètes de commandes
VI Architecture des systèmes matériels  et logiciels complexes
	Motivations pour une plus grande complexité
		Qu'appelle-t-on système complexe ?
		Scrutation
		Mécanisme d'interruption : définition et types d'utilisations
		Plan de la suite
	Le mécanisme d'interruption
		Architecture d'un processeur pour la multiprogrammation
		Introduction d'un mécanisme de scrutation élémentaire
		Un exemple détaillé d'utilisation : mise à jour de la pendule
		Notion de concurrence et d'atomicité des opérations
		Exercices
	Partage de temps et processus
		Principe et définitions
		Structures de données associées aux processus
		Organisation du traitant de commutation
		Création et destruction de processus
		Exercices
	Généralisation du mécanisme d'interruption et applications
		Classification des différentes sources d'interruption
		Protection entre processus, notion de superviseur
		Entrées/sorties gérées par interruption
		Pour aller plus loin
	Index
	Bibliographie
                        
Document Text Contents
Page 2

Architectures
Logicielles
et
Matérielles

P. Amblard, J.-C. Fernandez,

F. Lagnier, F. Maraninchi,

P. Sicard, Ph. Waille

Page 293

284 Le langage machine et le langage d’assemblage

constantes, des noms de variables du lexique, des appels de fonctions, etc.
(Cf. Chapitre 4, paragraphe 1.5).

Dans une instruction du langage machine, il parâıt difficile de coder
une condition quelconque faisant intervenir le contenu des registres ou de la
mémoire et d’éventuels appels de fonctions.

Une solution consiste à utiliser les instructions de calcul du langage ma-
chine pour calculer la valeur booléenne de l’expression qui conditionne un
branchement. On obtient ainsi, après un certain nombre d’étapes, une valeur
booléenne, rangée par exemple dans un registre ou une partie de registre. Le
branchement conditionnel peut ensuite être effectué d’après la valeur de ce
registre.

On peut donc fabriquer un langage machine suffisant en ajoutant aux ins-
tructions de calcul, une unique instruction de branchement conditionnel de la
forme BV n a. Cette instruction est un branchement si condition vraie, par
exemple absolu, avec adressage absolu. L’effet sur le compteur programme PC
est : si Regn = vrai alors PC ←− a sinon PC ←− PC+1.

Considérons le programme :
si (A+2*B < 4 et C ≥ 0) alors ... sinon ...

On peut toujours le transformer en :
X : un booléen { une nouvelle variable, non utilisée ailleurs }
X ←− A+2*B < 4 et C ≥ 0
si X alors ... sinon ...

Cette transformation est aisément généralisable à toutes les structures
conditionnelles ou itératives du langage d’actions. Elle permet de comprendre
comment produire une séquence d’instructions du langage machine correspon-
dante. Il suffit d’écrire tout d’abord une séquence d’instructions de calcul et/ou
de transferts mémoire destinées à placer dans un registre, par exemple Reg1, la
valeur booléenne de la condition (A+2*B < 4 et C ≥ 0). Suit immédiatement
une instruction BV 1 a, qui réalise un branchement d’après la valeur de Reg1.
(Pour une explication détaillée du codage des structures conditionnelles et
itératives en langage machine, voir chapitre 13, paragraphes 1.3 et 1.4).

En réalité la plupart des processeurs offrent une méthode intermédiaire
entre l’unique instruction de branchement conditionnel présentée ici et
l’hypothétique instruction universelle contenant le codage d’une condition
booléenne quelconque. Ces méthodes sont basées sur l’utilisation des indi-
cateurs arithmétiques (ou flags en anglais) fournis par le processeur. Dans
certains cas elles s’accompagnent de l’utilisation du mot d’état du processeur,
qui permet de stocker temporairement la valeur de ces indicateurs.

Indicateurs arithmétiques et mot d’état L’idée est simple : lors de toute
opération de calcul, l’unité arithmétique et logique du processeur produit des
comptes-rendus sous la forme de 4 booléens dits indicateurs arithmétiques, qui
peuvent être stockés dans une portion de registre interne spécialisé, appelé mot
d’état du processeur. Noter que sur le sparc, les instructions arithmétiques

Page 294

1. Le langage machine 285

existent en deux exemplaires : une version qui ne touche pas aux indicateurs,
et une version qui les met à jour.

Ces 4 indicateurs sont : Z, qui est vrai si le résultat de l’opération est 0 ; C,
qui est vrai si l’opération arithmétique a produit une retenue (C pour Carry)
et qui, si l’on interprète les opérandes et le résultat comme des entiers naturels
codés en binaire pur, signifie que le résultat n’est pas codable sur le même
nombre de bits que les opérandes ; N, qui est le bit de poids fort du résultat
(si ce résultat est interprété comme le codage en complément à 2 d’un entier
relatif, si N vaut 1 alors le résultat est négatif) ; V, qui n’a de sens que si
l’on interprète les opérandes et le résultat comme des entiers relatifs codés en
complément à 2, et qui est vrai si le résultat n’est pas représentable sur le même
nombre de bits que les opérandes (V pour oVerflow). Reprendre le chapitre 3
pour un exposé détaillé de la signification des divers indicateurs arithmétiques.

Si l’on considère un processeur qui travaille sur des nombres réels
représentés en virgule flottante, il faut tenir compte d’autres indicateurs ; il
existe pour la représentation en virgule flottante une notion de débordement
pour des valeurs trop petites ou trop grandes, non représentables avec la
précision disponible.

Expression des conditions de branchement à base d’indicateurs
arithmétiques et de mot d’état Considérons le cas où les indicateurs
arithmétiques sont stockés dans un registre après l’exécution de chaque
opération arithmétique. On introduit alors des opérations de branchement
d’après les valeurs de ces indicateurs (même idée que pour le branchement
unique BV présenté plus haut, mais la condition peut utiliser 4 booléens au lieu
d’un seul).

Sur des processeurs 8 bits comme le 6502, il y a 8 branchements, d’après
la valeur vrai ou faux des 4 booléens.

Sur la plupart des processeurs actuels, il y a 16 branchements, selon des
fonctions booléennes prédéfinies des indicateurs Z, N, C et V, correspondant
aux tests de comparaison usuels entre deux entiers naturels ou relatifs. On
trouve ainsi un branchement BLE (Branch on Less or Equal) dont la condi-
tion est Z ou (V et non N ou non V et N). Lorsqu’on a effectué une soustrac-
tion entre deux entiers A et B, les bits du registre d’état sont tels que cette
condition est vraie si et seulement si A ≤ B, en interprétant A et B comme des
entiers relatifs codés en complément à 2, pour faire la comparaison. En effet,
Z est vrai quand A = B, et la partie V et non N ou non V et N signifie que
A < B, en tenant compte des cas où la soustraction déborde. Nous donnons
les 16 fonctions booléennes usuelles au paragraphe 1.5. L’exercice E12.7 étudie
la formule booléenne associée au branchement BLE.

Page 586

Bibliographie

[Aa91] H. Abelson et all : Revised Report on the Algorithmic Language Scheme.
W. Clinger and J. Rees, 1991. 2.2.2

[AL78] Rodnay Zaks Austin Lesea : Techniques d’interface aux microprocesseurs.
Sybex, 1978. 2.1.1

[Bac90] M.J. Bach : Conception du système UNIX (traduction française de ”The
design of the Unix operating system, 1986). Ed. Masson, Ed Prentice-Hall,
1990. 4.

[BB83] P. Berlioux et Ph. Bizard : Algorithmique – construction, preuve et
évaluation des programmes. Dunod, 1983. 2.4.2, 10.22

[BB88] P. Berlioux et Ph. Bizard : Algorithmique – structures de données et algo-
rithmes de recherche. Dunod, 1988. 5.

[Ben91] Cl. Benzaken : Systèmes formels – Introduction à la logique et à la théorie
des langages. Masson, 1991. 1.1.2, 1.2

[BGN63] A.W. Burks, H.H. Goldstine et J. Von Neumann : Preliminary discussion
of the logical design of an electronic computing instrument, (article de 1946),
dans John von Neumann, Collected works, volume V. Ed. Pergamon Press,
1963. 2.2, 1.1

[BRWSV87] R. Brayton, R. Rudell, A. Wang et A. Sangiovanni-Vincentelli : Mis :
a multiple-level logic optimization system. IEEE Transaction on CAD, pages
1062–1081, novembre 1987. 4.1

[Bry86] R.E. Bryant : Graph-based algorithms for boolean functions manipulation.
IEEE Transaction on Computers, (8):677–692, août 1986. 3.3, 3.3.2

[CDLS86] M. Cand, E. Demoulin, J.L. Lardy et P. Senn : Conception des circuits
intégrés M.O.S. Eléments de base - perspective. Eyrolles, collection technique
et scientifique des télécommunications, 1986. 2.2.4, 3.2

[CGV80] P.-Y. Cunin, M. Griffith et J. Voiron : Comprendre la compilation. Sprin-
ger Verlag, 1980. 2.4.2, 1.1.1, 2.2.1, 1.2

[CW96] J. P. Colinge et F. Van De Wiele : Physique des dispositifs semi-conducteurs.
Editions De Boek Université, Paris, Bruxelles, 1996. 1.3

[GDS98] N. Garcia, A. Damask et S. Schwarz : Physics for Computer Science
Students (with emphasis on atomic and semi-conductor physics). Editions
Springer-Verlag, 1991, 1998. 1.3

[Gir95] J.-Y. Girard : La machine de Turing. Seuil, 1995. 2.1

[HP94] J. Hennessy et D. Patterson : Organisation et conception des ordinateurs.
L’interface matériel/logiciel. Ed. Dunod, 1994. 3.3, 14

[Ifr94] G. Ifrah : L’histoire universelle des chiffres : l’intelligence des hommes
racontée par les nombres et le calcul (2 tomes). Robert Laffont, collection
Bouquins, 1994. 2.1.1

Page 587

578 BIBLIOGRAPHIE

[Int97] Intel : The complete guide to MMX technology. McGraw-Hill, 1997. 1.4.1

[Kar53] M. Karnaugh : The map method for synthesis of combinational logic. Circuits
AIEE Transactions on Communications and Electronics, pages 593–599, 1953.
4.

[KB90] R.E. Bryant K. Brace, R. Rudell : Efficient implementation of a bdd package.
Proceedings of the 27th ACM/IEEE Design Automation Conference IEEE0738,
1990. 4.3

[Kra85] S. Krakowiak : Principes des systèmes d’exploitation des ordinateurs. Dunod
Informatique, 1985. 4.2, 4.

[Kun65] Jean Kuntzmann : Algèbre de Boole. Dunod, 1965. 4.

[Kun67] Jean Kuntzmann : Sélection parmi des communications présentées au colloque
consacré à l’Algèbre de Boole. Dunod, 1967. 4.

[Las98] J. Lassègue : Turing. Les belles lettres - collection Figures du savoir, 1998.
2.1

[Liv78] C. Livercy : Théorie des programmes - schémas, preuves, sémantique. Dunod,
1978. 2.

[Mul89] J.M. Muller : Arithmétique des ordinateurs. opérateurs et fonctions
élémentaires. Masson, collection Etudes et Recherches en Informatique, 1989.
2.2

[Org72] J.E. Organick : The MULTICS system : an examination of its structure. The
MIT Press, Cambridge MA, 1972. 2.6

[SFLM93] P.-C. Scholl, M.-C. Fauvet, F. Lagnier et F. Maraninchi : Cours d’in-
formatique : langages et programmation. Masson, 1993. 1., 1.4, 2.1, E8.9

[SG96] A. Silberschatz et P. B. Galvin : Principes des systèmes d’exploitation.
Addison-Wesley, 1996. 4.

[SL96] André Seznec et Fabien Lloansi : Etude des architectures des microproces-
seurs mips r10000, ultrasparc et pentiumpro. Publication interne 1024, INRIA,
Programme 1 - Architecture parallèles, bases de données, réseaux et systèmes
distribués – Projet CAPS, mai 1996. 1.4.4

[Tan94] A. Tanenbaum : Systèmes d’exploitation : systèmes centralisés, systèmes dis-
tribués. InterEditions, 1994. 4.

[Tur54] A. M. Turing : Solvable and unsolvable problems. Science News, 31:7–23,
1954. 2.1

[WM94] R. Wilhelm et D. Maurer : Les compilateurs : théorie, construction,
génération. Masson, 1994. 1.1.1, 2.2.1, 1.2

[Zak80] Rodnay Zaks : Applications du 6502. Sybex, 1980. 2.1.1

Similer Documents