Cours ISN Architecture matérielle

publicité
Informatique & Sciences du Numérique
Machines numériques
Architecture des machines - Matériel
Olivier SEBASTIEN
ESIROI-STIM
oliviers[@]co.univ-reunion.fr
2
Ce cours est sous licence
Par Olivier SEBASTIEN et al, sauf cas particulier
Ce cours est mis à disposition selon les termes de la licence Creative Commons Paternité - Pas
d’Utilisation Commerciale - Pas de Modification 3.0 non transcrit.
3
Table des matières
1 Introduction : vue générale................................................................................................ 6
2 Rappels : le binaire............................................................................................................. 7
2.1 Concept................................................................................................................................................. 7
2.1.1 Origine................................................................................................................................................. 7
2.1.2 Unités de base.................................................................................................................................... 7
2.1.3 Unités usuelles.................................................................................................................................... 7
2.1.4 Unités du système international ...................................................................................................... 8
2.2 Exercices............................................................................................................................................... 9
2.2.1 Exercice 1............................................................................................................................................ 9
2.2.1.1. Objectif de l'exercice................................................................................................................................ 9
2.2.1.2. Logiciel utilisé.......................................................................................................................................... 9
2.2.1.3. Stratégie.................................................................................................................................................... 9
2.2.1.4. Consignes................................................................................................................................................. 9
2.2.2 Exercice 2.......................................................................................................................................... 10
2.2.2.1. Objectif de l'exercice.............................................................................................................................. 10
2.2.2.2. Logiciel utilisé........................................................................................................................................ 10
2.2.2.3. Stratégie.................................................................................................................................................. 10
2.2.2.4. Consignes............................................................................................................................................... 10
3 Architecture matérielle..................................................................................................... 11
3.1 Concepts théoriques.......................................................................................................................... 11
3.1.1 Principe fondamental..................................................................................................................... 11
3.1.2 Fonctions élémentaires d'une architecture ................................................................................... 11
3.1.3 Modèle de l'architecture matérielle ............................................................................................... 12
3.1.3.1. Chipset.................................................................................................................................................... 12
3.1.3.2. Modèle.................................................................................................................................................... 12
3.1.4 Horloge.............................................................................................................................................. 12
3.1.5 Bus..................................................................................................................................................... 13
3.1.5.1. Définition............................................................................................................................................... 13
3.1.5.2. Caractéristiques..................................................................................................................................... 13
3.1.5.3. Bande passante...................................................................................................................................... 14
3.2 Exercices............................................................................................................................................. 15
3.2.1 Exercice 1.......................................................................................................................................... 15
3.2.1.1. Objectif de l'exercice.............................................................................................................................. 15
3.2.1.2. Logiciels utilisés..................................................................................................................................... 15
3.2.1.3. Stratégie.................................................................................................................................................. 15
3.2.1.4. Consignes............................................................................................................................................... 15
3.2.2 Exercice 2.......................................................................................................................................... 16
3.2.2.1. Objectif de l'exercice.............................................................................................................................. 16
3.2.2.2. Logiciels utilisés..................................................................................................................................... 16
3.2.2.3. Stratégie.................................................................................................................................................. 16
3.2.2.4. Consignes............................................................................................................................................... 16
3.2.3 Exercice 3.......................................................................................................................................... 16
3.2.3.1. Objectif de l'exercice.............................................................................................................................. 16
3.2.3.2. Logiciels utilisés..................................................................................................................................... 16
3.2.3.3. Stratégie.................................................................................................................................................. 16
3.2.3.4. Consignes............................................................................................................................................... 16
4 Microprocesseur................................................................................................................ 19
4.1 Concepts théoriques.......................................................................................................................... 19
4.1.1 Architecture interne.........................................................................................................................19
4.2 Exercices............................................................................................................................................. 21
4.2.1 Exercice 1.......................................................................................................................................... 21
4.2.1.1. Objectif de l'exercice.............................................................................................................................. 21
4.2.1.2. Logiciel utilisé........................................................................................................................................ 21
4.2.1.3. Stratégie.................................................................................................................................................. 21
4.2.1.4. Consignes............................................................................................................................................... 21
4.2.2 Exercice 2.......................................................................................................................................... 24
4.2.2.1. Objectif de l'exercice.............................................................................................................................. 24
4.2.2.2. Logiciel utilisé........................................................................................................................................ 24
4.2.2.3. Stratégie.................................................................................................................................................. 24
4
4.2.2.4. Consignes............................................................................................................................................... 24
5 Communication dans l'architecture................................................................................. 25
5.1 Concepts théoriques.......................................................................................................................... 25
5.1.1 Introduction..................................................................................................................................... 25
5.1.2 Mécanisme d'interruption ............................................................................................................... 25
5.1.3 Projection mémoire des Entrées/Sorties (E/S) ............................................................................. 25
5.1.4 Assembleur....................................................................................................................................... 26
5.2 Exercices............................................................................................................................................. 27
5.2.1 Exercice 1.......................................................................................................................................... 27
5.2.1.1. Objectif de l'exercice.............................................................................................................................. 27
5.2.1.2. Logiciel utilisé........................................................................................................................................ 27
5.2.1.3. Stratégie.................................................................................................................................................. 27
5.2.1.4. Consignes............................................................................................................................................... 27
5.2.2 Exercice 2.......................................................................................................................................... 28
5.2.2.1. Objectif de l'exercice.............................................................................................................................. 28
5.2.2.2. Logiciel utilisé........................................................................................................................................ 28
5.2.2.3. Stratégie.................................................................................................................................................. 28
5.2.2.4. Consignes............................................................................................................................................... 29
5
1 Introduction : vue générale
Ce cours vise à étudier quelle structure matérielle permet d'exécuter les programmes
répondant à nos divers besoins. On se demandera également comment évaluer les
performances d'une telle architecture.
Bien entendu, il sera difficile d'ignorer complètement les aspects logiciels : ils sont
étroitement associés au matériel. Le logiciel de bas niveau qui se trouve à l'interface sera donc
lui aussi évoqué.
Après un bref rappel sur le binaire, notre parcours commencera par une présentation
globale et générique de l'architecture matérielle. Puis, nous nous focaliserons sur son « chef
d'orchestre », le microprocesseur. Finalement, nous terminerons en faisant une initiation au
langage le plus simple qui régisse cette architecture : l'assembleur.
6
2 Rappels : le binaire
Le binaire constitue le langage de base de notre architecture. On est donc à tout moment
contraint à utiliser un alphabet constitué de deux lettres : 0 et 1.
2.1 Concept
2.1.1
Origine
Les circuits électroniques manipulent des courants électriques. Toute l'information plus
complexe (image, son, …) doit, comme on l'a vu précédemment, être exprimée de cette
manière.
On aurait pu définir un langage constitué d'une multitude de pas de tensions mais la
précision des circuits, notamment dans les années 40, à l'aube des premiers ordinateurs, ne
permettait pas une détection des changements de niveaux suffisamment fine. C'est pourquoi il
a été décidé de se fonder sur une détection du niveau de courant plus simple : il y a du
courant (état 1) ou il n'y en a pas (état 0).
2.1.2
0.
Unités de base
L'entité élémentaire de stockage d'information est le bit, qui stock soit un état 1, soit un état
De là découlent des multiples et des variantes utilisées pour mesure la vitesse de
transmission des données.
 Le Kilobit: 1 kb = 210 = 1024 bits
• unité de mesure des connexions Internet les plus lentes : Kb/s
 Le Megabit: 1 Mb = 220 bits
• unité de mesure des connexions Internet et réseau local : Mb/s
 Le Gigabit: 1 Gb = 230 bits
• unité de mesure des connexions très haut débit : Gb/s
 Le Terabit: 1 Tb = 240 bits
• unité de mesure des connexions fibre : Tb/s
2.1.3
Unités usuelles
Les unités de base sont complétées par une mesure en octets est plus courante. En effet,
historiquement, un octet était la capacité mémoire requise pour stocker un caractère (lettre,
chiffres, symboles) en ASCII. Le texte étant quasiment le seul type d'information manipulée à
l'époque, on pouvait donc évaluer pratiquement la capacité d'un support.
On distingue plusieurs multiples :
 Le Kilo-octet: 1 Ko = 210 = 1024 octets (KB en anglais)
7
 Le Mega-octet: 1 Mo = 220 octets = 210 Ko = 1024 Ko (MB en anglais)
 Le Giga-octet: 1 Go = 230 octets = 210 Mo = 1024 Mo (GB en anglais)
 Le Tera-octet : 1 To = 240 octets = 210 Go = 1024 Go (TB en anglais)
 Le Peta-octet : 1 Po = 250 octets = 210 To = 1024 To (PB en anglais)
Remarque : la traduction anglaise de mot octet est byte. Toutefois, la confusion avec le bit
est tout à fait possible lorsqu'on utilise les unités. C'est pourquoi, on respectera à la lettre la
convention suivante : le bit est représenté par un b minuscule, le Byte par un B majuscule.
2.1.4
Unités du système international
En décembre 1998, la Commission Electrotechnique Internationale (IEC) a adopté une
nouvelle charte de nommage des unités de mesure de l'information informatique afin de
l'harmoniser avec les autres unités du Système International (SI). En effet, dans ce système, le
préfixe Kilo fait référence à un facteur 1000 alors qu'en informatique, le facteur est 1024,
fondé sur la base 2.
Il a donc été créé un préfixe binaire utilisant les mêmes multiples. On parle donc de Kilo
Binaire, de Mega Binaire, de Giga Binaire, … Deux sous-variantes existent, pour les bits et les
octets.
Nom SI
Symbole
Facteur
Nom complet
Ancien préfixe
Kibi
Ki
210
Kilobinaire
Kilo
Mebi
Mi
220
Megabinaire
Mega
Gibi
Gi
230
Gigabinaire
Giga
Tebi
Ti
240
Terabinaire
Tera
Pebi
Pi
250
Petabinaire
Peta
Tableau 2.1 : préfixes standards de représentation de l'information binaire
8
Nom SI (anglais entre parenthèses)
Abréviation
Kibibit
1 Kib = 210 bit = 1024 bit
Kilobit
1 Kb = 103 bit = 1000 bit
Mebibit
1 Mib = 220 bit
Megabit
1 Mb = 106 bit
Mebioctet (MebiByte)
1 Mio = 1 MiB = 220 octets = 1048576 bit
Megaoctet (MegaByte)
1 Mo = 1 MB = 106 octets = 1000000 octets
Gibioctet (GibiByte)
1 Gio = 1 GiB = 230 octets
Gigaoctet (GigaByte)
1 Go = 1 GB = 109 octets
Pebioctet (PebiByte)
1 Pio = 1 PiB = 240 octets
Petaoctet (PetaByte)
1 Po = 1 PB = 1012 octets
Tableau 2.2 : quelques unités standards de représentation de l'information binaire
2.2 Exercices
2.2.1
Exercice 1
2.2.1.1.
Objectif de l'exercice
Manipuler les unités de mesure de l'information et faire le lien avec des faits rencontrés
dans la réalité.
2.2.1.2.
Logiciel utilisé
Calculatrice intégrée à tout système d'exploitation.
2.2.1.3.
Stratégie
Cet exercice est basé sur la réflexion. La stratégie consiste à comparer deux valeurs : l'une
théorique, l'autre pratique.
2.2.1.4.
Consignes
La capacité réelle d'un disque dur de 500 Go est de 465 Go. Expliquer ce fait. Y a-t-il
tromperie sur la marchandise ?
9
2.2.2
Exercice 2
2.2.2.1.
Objectif de l'exercice
Manipuler les unités de mesure de l'information et faire le lien avec des faits rencontrés
dans la réalité.
Approcher un des principes du stockage d'information sur un disque numérique.
2.2.2.2.
Logiciel utilisé
Calculatrice intégrée à tout système d'exploitation.
2.2.2.3.
Stratégie
Cet exercice est basé sur la réflexion. Toutefois, il peut être nécessaire de revoir le principe
de l'échantillonnage vu dans le cours précédent.
2.2.2.4.
Consignes
En audionumérique grand public, les spécifications du CD audio prévoient f s = 44,1 KHz
avec une quantification q = 16 bits en stéréo. A partir de ces données, il est possible de
calculer la consommation mémoire par minute de son : 10,09 Mo.
1. Quelle est la durée maximale de son que peut stocker un CD gravable de 700 Mo ?
2. Sur la boîte, il est écrit que le disque peut supporter 80 minutes de son en qualité CD.
Comment expliquer la différence par rapport à la question 1. ? Y a-t-il tromperie sur la
marchandise ?
10
3 Architecture matérielle
La structure présentée ici est valable pour l'immense majorité des systèmes existants : on
pense bien sûr aux micro-ordinateurs, mais tout autre système numérique est bâti sur les
mêmes principes : lecteur DVD/Bluray, console de jeux, téléphone portable, synthétiseur,
montre, ...
3.1 Concepts théoriques
3.1.1
Principe fondamental
Le principe de l'architecture informatique remonte aux années 40-50, même encore
actuellement. L'idée globale est la suivante : le système peut exécuter un nombre indéfini
d'actions, à partir des mêmes composants. On appelle programme l'élément qui implémente
une action que doit accomplir ce système. On reste bien sûr soumis aux capacités du matériel.
La grande originalité de ce concept est donc que l'on peut faire accomplir à une telle
machine, appelée ordinateur, des tâches qui n'ont pas été pré-programmées par son fabricant,
par opposition au concept d'automate.
3.1.2
Fonctions élémentaires d'une architecture
Une architecture informatique comporte obligatoirement les catégories de fonctions
suivantes :

Un circuit de traitement : il réalise les opérations nécessaires à l'accomplissement
d'un programme. C'est ce qu'on appelle le microprocesseur (ou processeur), du nom
du composant qui de nos jours intègre ce rôle autrefois dévolu à plusieurs
composants

De la mémoire RAM (Random Access Memory) : c'est la zone de travail du
microprocesseur. Une donnée et l'instruction qui intervient dessus doivent être
transférées dans la mémoire pour que le traitement opère. Cette mémoire est
volatile, c'est-à-dire que son contenu est perdu lorsque l'électricité est coupée

Des périphériques d'entrée/sortie (I/O en anglais, pour input/output) : cette
catégorie recouvre de multiples rôles :
◦ Stockage : disques, cassettes, cartouches, cartes perforées, ...
◦ Entrée d'information : clavier, souris, joystick, scanner, ...
◦ Sortie d'information : imprimante, affichage sur l'écran, ...
◦ Entrée/sortie : réseau, carte son, …
Tous ces circuits communiquent entre eux par l'intermédiaire de voies appelées bus à la
cadence donnée par une horloge.
Physiquement, la plupart prend place aujourd'hui sur une carte mère, concentrant
beaucoup de rôles.
11
3.1.3
Modèle de l'architecture matérielle
3.1.3.1.
Chipset
Pour assurer le fonctionnement de l'architecture, un contrôle permanent doit être effectué
afin d'organiser les échanges entre composants. Autrefois, il était assuré par un jeu de puces
différentes. Les progrès techniques ont permis l'intégration de ces fonctions au sein d'un
ensemble central appelé chipset (littéralement « jeu de puces »). C'est lui qui assure la
régulation des flux et l'accès du processeur aux autres ressources.
Physiquement, sur les ordinateurs traditionnels, les chipsets actuels sont composés de deux
parties :

Northbridge (encore appelé SPP) : il gère principalement la mémoire, le système
graphique et la liaison au Southbridge

Southbridge (encore appelé MCP) : il gère les ports d'entrée/sortie (PCI, USB, …),
l'alimentation (passage en veille) et le signal de l'horloge
Sur les équipement mobiles, le chipset est un seul composant et peut même être intégré au
processeur.
3.1.3.2.
Modèle
L'imbrication entre les différents éléments vus précédemment est présenté sur l''Illustration
3.1.
3.1.4
Horloge
L'horloge rythme les échanges et traitements de l'architecture. Elle produit des « tops »
déclenchant ces événements. Il est ainsi possible d'exprimer la vitesse, en Hertz (Hz) de chaque
composant comme un multiple de la pulsation de base que donne l'horloge. Actuellement,
elles varient de l'ordre de la centaine de mégahertz (MHz) dans les systèmes embarqués et sur
certains composants des cartes mère à quelques gigahertz (GHz) dans les microprocesseurs et
les cartes graphiques.
Techniquement, il s'agit d'un quartz qui oscille lorsqu'il est traversé par un courant. Le
signal produit est une forme d'onde carrée, visualisée à l'Illustration 3.2.
12
Initialement, c'était le front montant de l'horloge qui est utilisé pour déclencher les
opérations et les échanges. A l'heure actuelle, le front descendant est aussi utilisé pour doubler
(théoriquement) la quantité d'information échangée par cycle. On a ainsi deux modes :

SDR : Single Data Rate : transfert normal reposant uniquement sur les fronts
montants

DDR : Double Data Rate : transfert doublé utilisant fronts montants et descendants,
on a donc deux échanges par période au lieu d'une
3.1.5
Bus
3.1.5.1.
Définition
Comme on l'a vu précédemment, le bus est la voie d'interconnexion des composants. Il se
décompose en deux parties :

le bus d'adresse (address bus), qui donne la destination des données

le bus de données (data bus) qui contient l'information elle-même.
Le bus principal d'une architecture, celui qui interconnecte le microprocesseur, la mémoire
et le chipset est le FSB (Front Side Bus).
Plus généralement, les bus sont gérés par des contrôleurs et peuvent être reliés entre eux par
des ponts.
3.1.5.2.
Caractéristiques
Un bus est défini par les caractéristiques suivantes :

sa largeur en bits, ce qui induit deux grandes familles de bus
◦ série : les bits sont transmis l'un après l'autre, la largeur du bus est de 1
◦ parallèle : plusieurs voies (ou lignes) en parallèle transmettent plusieurs bits en
un cycle

sa vitesse, en MHz
13

sa directionnalité :
◦ half duplex : sur chaque voie, les bits ne peuvent circuler que dans un seul sens
◦ duplex : la communication peut se faire dans les deux sens entre circuits.
Autrement dit, émetteur et récepteurs peuvent échanger leurs rôles
◦ full duplex : la communication peut se faire dans les deux sens entre circuits,
simultanément

son type : SDR ou DDR. Dans ce dernier cas, il existe des variantes aux apports plus
ou moins réels. On peut noter le cas du DDR2 qui utilise fronts montants et
descendants simultanément pour une lecture de donnée et une écriture ce qui
double encore le débit par rapport au DDR et donc le quadruple par rapport au
SDR. Du moins théoriquement, car dans la pratique, on conçoit aisément qu'il faut
être prêt à faire les lectures et écritures simultanées à chaque cycle, ce qui est
rarement le cas
Illustration 3.3 : représentation imagée d'un bus
L'Illustration 3.3 propose un parallèle avec une autoroute pour évoquer la plupart de ces
caractéristiques. Les voitures représentent les bits d'information.
3.1.5.3.
Bande passante
Dans la pratique, les caractéristiques techniques d'un bus peuvent souvent être assimilées à
sa bande passante, c'est-à-dire la quantité d'information pouvant être transférée par seconde.
Le plus souvent, sa valeur maximale théorique est calculable grâce à la formule suivante :
B=T×L×f
14
où B : bande passante en bits/s
T : type de bus : T = 1 si SDR ou T = 2 si DDR
L : largeur du bus en bits
f : fréquence du bus en Herz
Étant données les valeurs actuelles, on a souvent l'habitude de convertir la bande passante
en Mo/s ou en Go/s. Pour cela, on divise d'abord la valeur calculée par la formule ci-dessus
par 8 (pour obtenir des octets) puis un certain nombre de fois par 1024.
Remarque : par définition, il n'est pas possible d'utiliser la formule précédente pour certains
bus, par exemple si celui-ci propose un système de compression des données. En effet, dans ce
cas, le taux de compression dépend du type de données.
3.2 Exercices
3.2.1
Exercice 1
3.2.1.1.
Objectif de l'exercice
Visualiser les différentes fonctions de l'architecture matérielle sur deux systèmes numériques
de la vie courante.
3.2.1.2.
Logiciels utilisés
3.2.1.3.
Stratégie
Aucun
L'idée est de décomposer chaque équipement par rapport à son usage : que produit-il ?
Comment le manipule-t-on ?
3.2.1.4.
Consignes
On considère les deux équipements suivants.
Équipement 1
Équipement 2
Donner pour chacun d'eux la liste de leurs périphériques d'entrées/sorties.
15
3.2.2
Exercice 2
3.2.2.1.
Objectif de l'exercice
Déterminer les performances d'un bus à travers sa bande passante.
3.2.2.2.
Logiciels utilisés
Calculatrice intégrée à tout système.
3.2.2.3.
Stratégie
Il suffit d'appliquer la formule.
3.2.2.4.
Consignes
Calculer la bande passante du bus mémoire d'un circuit graphique possédant les
caractéristiques suivantes : 128 bits DDR @500 MHz.
3.2.3
Exercice 3
3.2.3.1.
Objectif de l'exercice
Appréhender les principaux composants d'un ordinateur.
3.2.3.2.
Logiciels utilisés
3.2.3.3.
Stratégie
Aucun
Pas de stratégie particulière.
3.2.3.4.
Consignes
Voici les photographies d'une carte mère et de divers composants. Donner les nom des pièces
repérés par les numéros et expliquer leur rôle.
16
17
18
4 Microprocesseur
Dans l'architecture matérielle telle que présentée précédemment, le microprocesseur joue un
rôle clé car c'est lui qui accomplit le travail demandé. Même si au fil des années il s'est vu
adjoindre de nombreux circuits pour le décharger de certaines tâches, c'est lui qui dirige les
opérations, agissant comme un chef d'orchestre avec ses musiciens.
4.1 Concepts théoriques
4.1.1
Architecture interne
Le processeur est composé des unités fondamentales suivantes, représentées à l'Illustration
4.1 :

Des registres : mémoires très rapides contenant
◦ les données à traiter : registres de données
◦ les instructions : registre d'instruction
Il existe plusieurs types de registres. Les plus utilisés sont les registres généraux,
nommés dans l'architecture des PC EAX, EBX, ECX, EDX, ESI et EDI

Une unité de commande qui contrôle le travail à accomplir et les cycles

Un compteur ordinal qui contient l'adresse mémoire de la prochaine instruction à
exécuter

Des tampons (buffers) stockant temporairement les données et/ou instructions afin
d'éviter des accès à la mémoire hors processeur (RAM/ROM/Mémoire cache
externe), plus lents, pour les éléments utilisés fréquemment

D'un décodeur d'instruction qui paramètre le registre d'instruction

Des unités de traitement : ce sont elles qui font les calculs à proprement dit. On
compte en particulier :
◦ L'Unité Arithmétique et Logique (Arithmetic and Logical Unit – ALU) : elle
réalise et gère
▪ les opérations arithmétiques (addition, soustration, division, multiplication)
sur les nombres entiers (naturels ou relatifs)
▪ les opérations logiques (ET, OU, NON, OU EXCLUSIF)
▪ les accès à la mémoire ou transferts de données entre registres
▪ le contrôle de séquence et les branchements conditionnels
◦ L'Unité de Calcul en Virgule Flottante (Floating Point Unit – FPU) : réalise les
opérations arithmétiques sur les réels. Elle supporte également des nombreuses
fonctions non arithmétiques : trigonométrie, exponentielle, logarithme, …
19
◦ Les unités SIMD. Plus récentes, elles sont spécialisées dans le calcul de fonctions
complexes mais répétitives (qui s'appliquent sur un vecteur, par exemple). Ainsi,
ces unités sont spécialisées et sont capables d'aller très vite et en parallèle sur ce
qu'elles savent traiter. Elles sont largement liées au multimédia et au jeu vidéo.
Les plus connues sont, par ordre chronologique d'apparition :
▪ MMX et MMX2 : MultiMedia eXtension d'Intel. Apparues en 1997 pour
accélérer le codage et le décodage de la vidéo ainsi que les jeux vidéo en 3D
▪ 3DNow! : d'AMD. C'est le pendant du MMX chez AMD
▪ SSE, SSE2, SSE3, SSE4 : d'Intel, unité ayant évoluée depuis sont apparition
sur les Pentium 4 en 2002
▪ AltiVec : d'AIM (alliance Apple IBM Motorola). Encore connu sous le nom de
Velocity Engine, c'est une unité SIMD embarquée dans les processeurs G4 et
G5 utilisés jusqu'en 2006 dans les ordinateurs Macintosh
Toutes ces unités sont reliées entre elles par des bus pouvant être dédiés au transport de
données, d'instructions ou d'adresses. L'accès aux différentes mémoires externes se fait aussi
par des bus externes de données et d'adresses.
Illustration 4.1 : architecture interne d'un microprocesseur
Enfin, le processeur dispose de deux liaisons vers l'environnement extérieur : un bus externe
de contrôle et une ligne de signaux de contrôle afin de communiquer avec le chipset (et donc
le reste des composants).
Il existe beaucoup d'autres unités spécifiques à certains types de processeurs particuliers ou
20
dont l'équipement varie en fonction des progrès technologiques.
4.2 Exercices
4.2.1
Exercice 1
4.2.1.1.
Objectif de l'exercice
Comparer deux architectures différentes conçues pour répondre au même objectif.
4.2.1.2.
Logiciel utilisé
4.2.1.3.
Stratégie
Aucun
Il faut d'abord identifier les critères qui seront utilisés pour définir les performances.
Exemple : processeur, mémoire... Ensuite, on pourra remplir un tableau avec dans chaque
colonne l'une et l'autre des architectures.
4.2.1.4.
Consignes
Le but de cet exercice est de comparer deux architectures dédiées au même but : le jeu
vidéo. Pour cela, une documentation est fournie ci-dessous.
1. Comparer les deux architectures proposées
2. Proposer une conclusion sur les deux philosophies architecturales qui s'opposent ici
21
Architecture 1
Architecture 2
Sega Megadrive
Nintendo Super Nintendo
Technical specifications Sega Mega Drive
Super Nintendo Hardware
CPU
Specifications/features
* Main processor: 16-bit Motorola M68000 (or
The design of the Super Nintendo/Super Famicom
equivalent)
was unusual for its time. It featured a relatively lowperformance CPU supported by very powerful custom
o runs at 7.61MHz in PAL consoles, 7.67MHz chips for sound and video processing. This approach
would become common in subsequent video game
in NTSC consoles
hardware, but at the time it was new to game
developers. As a result early third-party games were of
* Sound processor: 8-bit Zilog Z80a (or equivalent) low technical quality. Developers later became
accustomed to the system, and were able to take
o runs at 3.55MHz in PAL consoles, 3.58MHz advantage of its full potential. It was the first console
in NTSC consoles
capable of applied acoustics in video game audio sold
in North America, Europe, and Japan.
o used as main CPU in Master System
compatibility mode.
* Core
Memory
* Boot ROM: 2 KBytes
o runs when console is first switched on.........
* CPU: Nintendo custom '5A22', believed to be
produced by Ricoh; based around a 16-bit CMD/GTE
65c816 (a predecessor of the WDC 65C816). The CPU
runs the 65c816-alike core with a variable-speed bus,
with bus access times determined by addresses accessed,
with a maximum theoretical effective clock rate around
3.58 MHz. The SNES/SFC provided the CPU with 128
KB of Work RAM.
o contains 'copyright check' code for locking out
The CPU also contains other support hardware,
unlicensed games
including hardware:
o displays message 'Produced by or under
license from Sega Enterprises Ltd.' when a licensed
game is detected
o Boot ROM is not present on earlier versions of
the Mega Drive 1
o The name Sega gave this boot ROM was the
TMSS (TradeMark Security System)
* Main RAM: 64 KBytes
o part of M68000 address space
o for interfacing with controller ports;
o for generating NMI interrupts on Vblank;
positions;
o for generating IRQ interrupts on screen
o DMA unit, supporting two primary modes, general
DMA (for block transfers, at a rate of 2.68MB/second)
and Hblank DMA (for transferring small data sets at the
end of each scanline, outside of the active display
period);
o multiplication and division registers.
* Video RAM: 64 KBytes
o cannot be accessed directly by CPU, must be
read and written via VDP (Video Display Processor - see
* Cartridge Size Specifications: 2 - 32 Mb which
below)
ran at two speeds ('SlowROM' and 'FastROM'). Custom
address decoders allow larger sizes, eg. 64 Mb for Star
* Sound RAM: 8 KBytes
Ocean and Tales of Phantasia
o part of Z80 address space
o used as main RAM in Master System
compatibility mode
* Sound
o Sound Controller Chip: 8-bit Sony SPC700
* Cartridge memory area: up to 4 MBytes (32 CPU for controlling the DSP; running at an effective
Megabits)
clock rate around 1.024 MHz.
o part of M68000 address space
with
22
o Main Sound Chip: 8-channel Sony S-DSP
hardware
ADPCM
decompression,
pitch
o Game cartridges larger than 4 MBytes must modulation,
echo
effect
with
feedback
(for
use bank switching
reverberation) with 8-tap FIR filter, and ADSR and
'GAIN' (discretely controlled) volume envelopes.
o Memory Cycle Time: 279 Minutes
Graphics
o Low-pass filter for improved quality of lowThe Mega Drive has a dedicated VDP (Video Display frequency (bass) tones
Processor) for playfield and sprite control. This is an
improved version of the Sega Master System VDP, which
o Sound RAM: 512 Kb shared between SPC700
in turn is derived from the Texas Instruments TMS9918. and S-DSP.
* Planes: 4 (2 scrolling playfields, 1 sprite plane, 1
o Pulse Code Modulator: 16-Bit ADPCM (using
'window' plane)
4-bit compressed ADPCM samples, expanded to 15-bit
resolution, processed with an additional 4-point
* Sprites: up to 80 onscreen, depending on display Gaussian sound interpolation).
mode
o Note - while not directly related to SNES
hardware, the standard extension for SNES audio
* Palette: 512 colours (29)
subsystem state files saved by emulators is .SPC, a
format used by SPC players.
* Onscreen colours: 64 x 9-bit words of colour
RAM, allowing 61 onscreen colours (up to 1536 using
raster effects and Shadow/Hilight mode)
* Video
* Pixel resolution: depends on display mode
o Picture Processor Unit: 15-Bit
o up to 320x240 (40x30 cells) for PAL
o Video RAM: 64 KB of video RAM for screen
maps (for 'background' layers) and tile sets (for
backgrounds and objects); 512 + 32 bytes of 'OAM'
o interlaced modes can provide double the (Object Attribute Memory) for objects.
vertical resolution (i.e. 320x448 for NTSC). Used in
Sonic 2 for 2-player split screen
o Palette: 32,768 Colors.
o up to 320x224 (40x28 cells) for NTSC
o Maximum colors per layer per scanline: 256.
Sound
* Main sound chip: Yamaha YM2612 6 channels
(5 FM channels + 1 PCM/FM channel)
o Maximum colors on-screen: 32,768 (using
color arithmetic for transparency effects).
o Resolution: between 256x224 and 512x478.
Most games used 256x224 pixels since higher
* Additional sound chip: Texas Instruments resoulutions caused slowdown, flicker, and/or had
SN76489 4 channel PSG (Programmable Sound increased limitations on layers and colors (due to
Generator)
memory bandwidth constraints); the higher resolutions
were used for less processor-intensive games, in-game
o 3 sound generators, 4 octaves each, 1 white menus, text, and high resolution images.
noise generator
o Maximum onscreen objects (sprites): 128 (32
per line, up to 34 8x8 tiles per line).
Inputs and outputs
only
o Maximum number of sprite pixels on one
scanline: 256. The renderer was designed such that it
would drop the frontmost sprites instead of the rearmost
* RF output: connects to TV aerial input
sprites if a scanline exceeded the limit, allowing for
o exists on European and Asian Mega Drive 1 creative clipping effects.
o Most common display modes: Pixel-to-pixel
o other models must use external RF modulator text mode 1 (16 colors per tile; 3 scrolling layers) and
affine mapped text mode 7 (256 colors per tile; one
which plugs into A/V output
rotating/scaling layer).
* A/V output: DIN connector with composite video,
RGB, and audio outputs
o Effects
# Pixelization (mosaic) per background
o Mega Drive 1 has 8-pin socket (same as
Master System), supports mono audio only
23
o Mega Drive 2, Multimega, and other models
have 9-pin mini DIN socket with both mono and stereo
audio
* Power input: requires 9-10 volts DC, 0.85-1.2 A
depending on model
# Color addition and subtraction
# Clipping windows (per background, affecting color,
math, or both)
# Scrolling per 8x8 tile
* Headphone output: 3.5 mm stereo jack on front
of console (Mega Drive 1 only)
# Mode 7 matrix operation
* "EXT" port: 9-pin D socket for Meganet modem
connection
* Power Adapter
o exists on all Japanese and Asian Mega Drive 1
units, and on early European Mega Drive 1 units
o Transformer Input: 120 VAC, 60 Hz, 17 watts
o Transformer Output: 10 VDC, 850 mA
* Control pad inputs: 2 x 9-pin D connectors on
(NTSC),
9
VAC
(PAL)
front of console
* Plugs
* Expansion port: Edge connector on bottom right
hand side of console for Sega Mega-CD connection
o 2x Controllers - Response: 16ms
o Expansion port
o A/V output
4.2.2
Exercice 2
4.2.2.1.
Objectif de l'exercice
Découvrir les caractéristiques d'un ordinateur sans l'ouvrir.
4.2.2.2.
Logiciel utilisé
A chercher !
4.2.2.3.
Stratégie
Il existe des logiciels et des manipulations permettant de connaître les principales
caractéristiques techniques d'un ordinateur. Quelques recherches sur Internet permettront de
trouver des idées adaptées au système d'exploitation (Windows, Mac, Linux) de la machine en
présence.
4.2.2.4.
Consignes
Déterminer les caractéristiques de processeur, de mémoire, de disque et de ports
d'entrée/sortie de l'ordinateur en face de vous.
24
5 Communication dans l'architecture
Nous terminerons ce cours en analysant comment fonctionne la communication et la
programmation de bas niveau dans l'architecture
5.1 Concepts théoriques
5.1.1
Introduction
Conceptuellement, tous les circuits de l'architecture sont conçus pour réagir à des
sollicitations électriques. On distingue les instructions, qui déclenchent des fonctions et les
données, qui sont l'information sur laquelle les fonctions seront appliquées.
Le but de ce chapitre est de passer en revue quelques commandes qui utilisent le
microprocesseur pour commander des périphériques d'entrée-sortie.
5.1.2
Mécanisme d'interruption
Le fonctionnement de l'architecture est organisé en cycles réguliers. Le travail à accomplir à
chaque pas de temps ne peut toutefois pas tout le temps être anticipé dans la liste des
instructions. D'où l'implémentation d'un mécanisme d'interruptions qui permet d'interrompre
les tâches courantes du processeur afin d'exécuter des tâches plus « urgentes » ou en rapport
avec l’occurrence d'événements spéciaux comme par exemple le dépassement d'une valeur
seuil, la notification d'un périphérique qui a terminé son traitement et qui en attend un
autre, la sollicitation d'un contrôleur, …
Il existe deux types d'interruptions :

matérielles: utilisées par les unités d'entrée/sortie

logicielles: servant à appeler des routines du BIOS, logiciel le plus simple d'un
ordinateur ou du système d'exploitation
Il convient à présent d'étudier comment le processeur peut communiquer avec les
périphériques, à travers ce dispositif et par l'intermédiaire du chipset.
5.1.3
Projection mémoire des Entrées/Sorties (E/S)
Toutes les unités ont une adresse propre, un port d'E/S en mémoire RAM, pour réaliser les
échanges de données. C'est ce qu'on appelle la projection mémoire des E/S (I/O memory
mapping). Ainsi, le processeur s'adresse à cette adresse pour atteindre l'unité en question, en
lecture et/ou écriture.
Sur les PC, ordinateur historiquement 16 bits, il y a 2 16 adresses possibles pour cette
projection.
Exemple : fonctionnement d'une carte réseau (Illustration 5.3)
Une portion de la mémoire RAM est dédiée, de façon logicielle ou matérielle (en déplaçant
des cavaliers sur la carte) à la carte réseau. La moitié pour lire les données reçues, l'autre
moitié pour envoyer des données.
Du point de vue du processeur, il suffit donc d'aller lire les données localisées aux adresses
de réception de la projection mémoire pour accéder à ce que la carte réseau a transporté en
entrée. La carte réseau, de son côté, ira chercher les données à expédier sur le réseau dans la
plage d'adresses réservée aux données en sortie.
25
Le circuit PIC (Programmable Interruption Controller) se charge de gérer les interruptions.
Ce mécanisme permet des subtilités intéressantes, comme le partage de la mémoire RAM
centrale aux périphériques. Exemples: carte graphique à mémoire partagée, chargement de
samples dans les cartes son avancées, RAMdisks...
Illustration 5.1 : modèle de projection des entrées/sorties
5.1.4
Assembleur
Avant de définir l'assembleur, il convient de présenter le langage machine. C'est le langage
que le microprocesseur est capable de comprendre sans « traduction ». Concrètement, il s'agit
d'une suite de 0 et de 1 qui représentent soit des ordres (instructions) soit des informations à
traiter (données).
Voici un exemple d'opération en langage machine : A1 01 10 03 06 01 12 A3 01 14
On peut voir aisément qu'il s'agit de l'addition du contenu de deux adresses mémoire et du
stockage du résultat dans une troisième adresse mémoire (ironie inside). Toutefois, certaines
personnes éprouvent du mal à lire ce genre de code, c'est pourquoi il a été nécessaire
d'imaginer une couche d'abstraction qui facilite l'écriture et la lecture d'un programme, sans
trop s'éloigner du langage machine : l'assembleur.
L'assembleur est le langage le plus proche du langage machine car les opérations qui sont
décrites dans un tel programme peuvent être interprétées directement par les différentes
unités du processeur.
Pour des raisons de commodité et de lisibilité, les instructions sont représentées par des
mots-clés plus faciles à manipuler par les humains. Les données peuvent quant à elles se voir
représentées par des labels, des noms choisis par le développeur.
Les mots clés sont appelés mnémoniques. Ils forment la représentation symbolique et
permettent de séparer les opérateurs des opérandes.
Exemple : l'addition donnée au paragraphe précédent peut s'écrire de la façon suivante en
assembleur :
ADD @A, @B, @C
26
5.2 Exercices
5.2.1
Exercice 1
5.2.1.1.
Objectif de l'exercice
Concevoir et exécuter un programme en assembleur. Découvrir « l'envers du décor ».
5.2.1.2.
Logiciel utilisé
Nasm et ld : ce sont des programmes basiques (en ligne de commande) mais puissants pour
programmer en assembleur.
5.2.1.3.
Stratégie
Un code de base est fourni. L'idée consiste à voir d'abord les différentes sections du
programme puis à comprendre, à l'intérieur, à quoi sert chaque instruction.
5.2.1.4.
Consignes
On donne le code assembleur suivant :
section .data
hello:
helloLen:
db 'Hello world!',10
equ $-hello
section .text
global _start
_start:
; Write 'Hello world!'
mov eax,4
;
mov ebx,1
;
mov ecx,hello
;
mov edx,helloLen
;
int 80h
;
; Terminate program
mov eax,1
mov ebx,0
int 80h
to the screen
'write' system call
file descriptor 1 = screen
string to write
length of string to write
call the kernel
; 'exit' system call
; exit with error code 0
; call the kernel
Code extrait du cours d'Assembleur de Derick Swanepoel © 2002
1. Le recopier et le lier dans un fichier texte enregistré sous le nom hello.asm
2. L'assembler et le lier grâce aux instructions suivantes :
•
nasm -f elf hello.asm
•
ld -s -o hello hello.o
•
Exécuter le programme : ./hello
27
5.2.2
Exercice 2
5.2.2.1.
Objectif de l'exercice
Découvrir des interruptions utilisées dans la gestion des fichiers dans une architecture
matérielle.
5.2.2.2.
Logiciel utilisé
Nasm et ld : comme à l'exercice précédent.
5.2.2.3.
Stratégie
Un code de base est aussi fourni. Il suffira de l'adapter au contexte. Il y a ici une nouveauté :
des informations fournies par l'utilisateur sont récupérées grâce à une pile.
La pile (stack en anglais) est une structure d'organisation des données : c'est un espace
mémoire réservé à l'enregistrement continu de données.
Pour l'expliquer, on peut tout à fait prendre la métaphore de la pile d'assiettes dans l'évier,
comme montré à l'Illustration 5.2.
Illustration 5.2 : structure de pile
L'instruction assembleur PUSH permet de mettre une information au sommet de la pile,
alors que l'instruction POP permet de la retirer.
Dans la structure de pile, c'est la dernière donnée à être entrée qui est la première à être
accessible. On dit alors que c'est une structure de type LIFO : Last In First Out.
L'inverse de ce concept est le FIFO : First In First Out. Autrement dit, le premier arrivé est le
premier servi. C'est le cas de la file d'attente à une caisse de supermarché.
Dans l'environnement que nous utilisons un mécanisme très pratique permet de récupérer
dans la pile les paramètres que l'utilisateur a entré lors du lancement du programme.
Tout part de la ligne de commande qui lance le programme. Après le nom de celui-ci sont
passés les différents paramètres séparés chacun par un espace.
28
Exemple : ./monprogramme parametre1 parametre2 parametre3
Tous ces éléments sont automatiquement placés sur la pile, dans cet ordre. Chacun d'eux est
un argument (arg[n]), y compris le nom du programme qui est l'argument 0. Le nombre total
d'arguments (argc) les précède dans la pile.
La structure de la pile au démarrage sera conforme à l'Illustration 5.3.
Illustration 5.3 : structure de la pile lors du lancement d'un programme
5.2.2.4.
Consignes
Écrire et exécuter le programme donné ci-dessous
section .data
hello
helloLen
db
equ
'Hello, world!',10
$ - hello
; Our dear string
; Length of our dear string
section .text
global _start
_start:
pop
pop
pop
ebx
ebx
ebx
; argc (argument count)
; argv[0] (argument 0, the program name)
; The first real arg, a filename
mov
eax,8
mov
int
ecx,00644Q
80h
; The syscall number for creat()
;(we already have the filename in ebx)
; Read/write permissions in octal (rw_rw_rw_)
; Call the kernel
; Now we have a file descriptor in eax
test
js
eax,eax
skipWrite
call
fileWrite
; Lets make sure the file descriptor is valid
; If the file descriptor has the sign flag
;(which means it's less than 0) there was an
;oops, so skip the writing. Otherwise call the
;filewrite "procedure"
29
skipWrite:
mov
mov
int
ebx,eax
eax,1
80h
; If there was an error, save the errno in ebx
; Put the exit syscall number in eax
; Bail out
; proc fileWrite - write a string to a file
fileWrite:
mov
ebx,eax
mov
eax,4
mov
mov
ecx,hello
edx,helloLen
int
80h
mov
int
ret
eax,6
80h
;
;
;
;
;
;
;
sys_creat returned file descriptor into eax,
now move into ebx
sys_write
ebx is already set up
We are putting the ADDRESS of hello in ecx
This is the VALUE of helloLen because
it's a constant (defined with equ)
; sys_close, ebx already contains file descriptor
; endp fileWrite
Code extrait du cours d'Assembleur de Derick Swanepoel © 2002
30
Téléchargement