Informatique & Sciences du Numérique

Machines numériques

Architecture des machines - Matériel

Olivier SEBASTIEN ESIROI-STIM

oliviers[@]co.univ-reunion.fr

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.

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.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

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.

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 Unités de base

L'entité élémentaire de stockage d'information est le bit, qui stock soit un état 1, soit un état

0. 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)  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
Kibi Ki
Mebi Mi
Gibi Gi
Tebi Ti
Pebi Pi

Tableau 2.1 : préfixes standards de représentation de l'information binaire

Facteur

210 220 230 240 250

Nom complet Ancien préfixe
Kilobinaire Kilo
Megabinaire Mega
Gigabinaire Giga
Terabinaire Tera
Petabinaire Peta

Nom SI (anglais entre parenthèses)

Kibibit Kilobit Mebibit Megabit Mebioctet (MebiByte) Megaoctet (MegaByte) Gibioctet (GibiByte) Gigaoctet (GigaByte) Pebioctet (PebiByte) Petaoctet (PetaByte)

Abréviation 1 Kib = 210 bit = 1024 bit 1 Kb = 103 bit = 1000 bit

1 Mib = 220 bit 1 Mb = 106 bit 1 Mio = 1 MiB = 220 octets = 1048576 bit 1 Mo = 1 MB = 106 octets = 1000000 octets 1 Gio = 1 GiB = 230 octets 1 Go = 1 GB = 109 octets 1 Pio = 1 PiB = 240 octets 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 ?

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 fs = 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 ?

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.

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.

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

 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

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

où B : bande passante en bits/s

  1. T : type de bus : T = 1 si SDRou T =2si DDR

  2. L : largeur du bus en bits

  3. 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

Aucun

3.2.1.3. Stratégie

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.

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

Aucun

3.2.3.3. Stratégie

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.

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, …

    • 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.

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 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é

Aucun

4.2.1.3. Stratégie

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

Technical specifications Sega Mega Drive CPU

* Main processor: 16-bit Motorola M68000 (or equivalent)

    1. o runs at 7.61MHz in PAL consoles, 7.67MHz in NTSC consoles

    2. * Sound processor: 8-bit Zilog Z80a (or equivalent)
  1. o runs at 3.55MHz in PAL consoles, 3.58MHz in NTSC consoles

  2. o used as main CPU in Master System compatibility mode.

Memory

* Boot ROM: 2 KBytes

o runs when console is first switched on.........

  1. o contains 'copyright check' code for locking out unlicensed games

  2. o displays message 'Produced by or under license from Sega Enterprises Ltd.' when a licensed game is detected

  3. o Boot ROM is not present on earlier versions of the Mega Drive 1

    1. o The name Sega gave this boot ROM was the TMSS (TradeMark Security System)

    2. * Main RAM: 64 KBytes
    3. o part of M68000 address space
    4. * Video RAM: 64 KBytes
    1. o cannot be accessed directly by CPU, must be read and written via VDP (Video Display Processor -see below)

    2. * Sound RAM: 8 KBytes
    3. o part of Z80 address space
  4. o used as main RAM in Master System compatibility mode

* Cartridge memory area: up to 4 MBytes (32 Megabits)

o part of M68000 address space Super Nintendo Hardware

Specifications/features

The design of the Super Nintendo/Super Famicom was unusual for its time. It featured a relatively lowperformance CPU supported by very powerful custom chips for sound and video processing. This approach would become common in subsequent video game hardware, but at the time it was new to game developers. As a result early third-party games were of low technical quality. Developers later became accustomed to the system, and were able to take advantage of its full potential. It was the first console capable of applied acoustics in video game audio sold in North America, Europe, and Japan.

* Core

* 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.

The CPU also contains other support hardware, including hardware:

  1. o for interfacing with controller ports;

  2. o for generating NMI interrupts on Vblank;

  1. o for generating IRQ interrupts on screen positions;

  2. 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.

* Cartridge Size Specifications: 2 -32 Mb which ran at two speeds ('SlowROM' and 'FastROM'). Custom address decoders allow larger sizes, eg. 64 Mb for Star Ocean and Tales of Phantasia

* Sound

  1. o Sound Controller Chip: 8-bit Sony SPC700 CPU for controlling the DSP; running at an effective clock rate around 1.024 MHz.

  2. o Main Sound Chip: 8-channel Sony S-DSP with hardware ADPCM decompression, pitch

o Game cartridges larger than 4 MBytes must use bank switching

Graphics

The Mega Drive has a dedicated VDP (Video Display Processor) for playfield and sprite control. This is an improved version of the Sega Master System VDP, which in turn is derived from the Texas Instruments TMS9918.

*
Planes: 4 (2 scrolling playfields, 1 sprite plane, 1 'window' plane)
*
Sprites: up to 80 onscreen, depending on display mode
* Palette: 512 colours (29)
*
Onscreen colours: 64 x 9-bit words of colour RAM, allowing 61 onscreen colours (up to 1536 using raster effects and Shadow/Hilight mode)

* Pixel resolution: depends on display mode

  1. o up to 320x240 (40x30 cells) for PAL

  2. o up to 320x224 (40x28 cells) for NTSC

o interlaced modes can provide double the vertical resolution (i.e. 320x448 for NTSC). Used in Sonic 2 for 2-player split screen

Sound

*
Main sound chip: Yamaha YM2612 6 channels (5 FM channels + 1 PCM/FM channel)
*
Additional sound chip: Texas Instruments SN76489 4 channel PSG (Programmable Sound Generator)

o 3 sound generators, 4 octaves each, 1 white noise generator

Inputs and outputs

* RF output: connects to TV aerial input

o exists on European and Asian Mega Drive 1 only

o other models must use external RF modulator which plugs into A/V output

* A/V output: DIN connector with composite video, RGB, and audio outputs

o Mega Drive 1 has 8-pin socket (same as Master System), supports mono audio only

modulation, echo effect with feedback (for reverberation) with 8-tap FIR filter, and ADSR and 'GAIN' (discretely controlled) volume envelopes.

o Memory Cycle Time: 279 Minutes

  1. o Low-pass filter for improved quality of lowfrequency (bass) tones

  2. o Sound RAM: 512 Kb shared between SPC700 and S-DSP.

  3. o Pulse Code Modulator: 16-Bit ADPCM (using 4-bit compressed ADPCM samples, expanded to 15-bit resolution, processed with an additional 4-point Gaussian sound interpolation).

    1. o Note -while not directly related to SNES hardware, the standard extension for SNES audio subsystem state files saved by emulators is .SPC, a format used by SPC players.

    2. * Video
    3. o Picture Processor Unit: 15-Bit
    1. 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' (Object Attribute Memory) for objects.

      1. o Palette: 32,768 Colors.

      2. o Maximum colors per layer per scanline: 256.

  4. o Maximum colors on-screen: 32,768 (using color arithmetic for transparency effects).

  5. o Resolution: between 256x224 and 512x478. Most games used 256x224 pixels since higher resoulutions caused slowdown, flicker, and/or had increased limitations on layers and colors (due to memory bandwidth constraints); the higher resolutions were used for less processor-intensive games, in-game menus, text, and high resolution images.

  6. o Maximum onscreen objects (sprites): 128 (32 per line, up to 34 8x8 tiles per line).

  7. 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 sprites if a scanline exceeded the limit, allowing for creative clipping effects.

  8. o Most common display modes: Pixel-to-pixel text mode 1 (16 colors per tile; 3 scrolling layers) and affine mapped text mode 7 (256 colors per tile; one rotating/scaling layer).

o Effects

# Pixelization (mosaic) per background

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
*
Headphone output: 3.5 mm stereo jack on front of console (Mega Drive 1 only)
*
"EXT" port: 9-pin D socket for Meganet modem connection

o exists on all Japanese and Asian Mega Drive 1 units, and on early European Mega Drive 1 units

*
Control pad inputs: 2 x 9-pin D connectors on front of console
*
Expansion port: Edge connector on bottom right hand side of console for Sega Mega-CD connection

4.2.2 Exercice 2

4.2.2.1. Objectif de l'exercice

# Color addition and subtraction # Clipping windows (per background, affecting color,

math, or both) # Scrolling per 8x8 tile # Mode 7 matrix operation

* Power Adapter

o Transformer Input: 120 VAC, 60 Hz, 17 watts

o Transformer Output: 10 VDC, 850 mA (NTSC), 9 VAC (PAL)

* Plugs

  1. o 2x Controllers -Response: 16ms

  2. o Expansion port

  3. o A/V output

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.

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.

216

Sur les PC, ordinateur historiquement 16 bits, il y a 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.

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...

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

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: db 'Hello world!',10
helloLen: equ $-hello
section .text

global _start

_start:

; Write 'Hello world!' to the screen mov eax,4 ; 'write' system call mov ebx,1 ; file descriptor 1 = screen mov ecx,hello ; string to write mov edx,helloLen ; length of string to write int 80h ; call the kernel

; Terminate program mov eax,1 ; 'exit' system call mov ebx,0 ; exit with error code 0 int 80h ; 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

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.

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.

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.

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 ebx pop ebx pop ebx ; argc (argument count); argv[0] (argument 0, the program name); The first real arg, a filename
mov eax,8 ; The syscall number for creat();(we already have the filename in ebx)

mov ecx,00644Q ; Read/write permissions in octal (rw_rw_rw_) int 80h ; Call the kernel ; Now we have a file descriptor in eax

test eax,eax ; Lets make sure the file descriptor is valid

js skipWrite ; 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" call fileWrite

skipWrite: mov ebx,eax ; If there was an error, save the errno in ebx mov eax,1 ; Put the exit syscall number in eax int 80h ; Bail out

; proc fileWrite - write a string to a file

fileWrite: mov ebx,eax ; sys_creat returned file descriptor into eax, ; now move into ebx mov eax,4 ; sys_write

; ebx is already set up mov ecx,hello ; We are putting the ADDRESS of hello in ecx mov edx,helloLen ; This is the VALUE of helloLen because

; it's a constant (defined with equ) int 80h

mov eax,6 ; sys_close, ebx already contains file descriptor int 80h ret

; endp fileWrite

Code extrait du cours d'Assembleur de Derick Swanepoel © 2002