STRUCTURE FONCTIONNELLE MATÉRIELLE ET LOGICIELLE DES SYSTÈMES DE TRAITEMENT DE L'INFORMATION Introduction L'objectif ici est de vous apporter des connaisances de base d'un point de vue matériel et logiciel concernant les systèmes microprogrammés. Il va de soi qu'ils sont complexes et que leur approche sera très simplifiée. Il est cependant intéressant de remarquer que le principe de fonctionnement que nous allons voir est valable pour toutes les machines numériques que nous connaissons : ordinateur, console de jeu, téléphone portable, etc. Depuis maintenant plusieurs années la tendance est tournée vers une intégration de plus en plus importante (nombre de transistors toujours plus important sur une même surface). Pourtant cela n'a pas empêché la baisse des prix, et il existe aujourd'hui des composants possédant une miryade de fonctions pour un prix dérisoire au regard de leurs performances. 1. STRUCTURE FONCTIONNELLE MATÉRIELLE 1.1 SCHÉMA GÉNÉRAL Tous les S.T.I. possède la même architecture matérielle (ou presque). Le schéma ci-dessous vous en donne une vue extrêmement simplifiée mais elle reste exacte et permet de bien comprendre comment s'agence tout ce petit monde. Unité de traitement Mémoire Vive Mémoire Morte Bus de commande Bus des données Bus d'adresse Interfaces Entrée/Sortie Schéma fonctionnel interne d'un microcontrôleur SRUCTURE FONCTIONNELLE MATÉRIELLE ET LOGICIELLE DES SYSTÈMES DE TRAITEMENT DE L'INFORMATION page 1/5
Unité de traitement : c'est elle qui effectue tous les calculs en fonction de ce qui est demandé dans le programme. La mémoire vive : c'est une mémoire fugitive qui perd les informations qu'elle contient lorsqu'elle n'est plus sous tension. Elle a cependant l'avantage d'être rapide. La mémoire morte : c'est une mémoire qui garde les informations qu'elle contient lorsqu'elle n'est plus sous tension. Elle a cependant l'inconvénient d'être lente. Elle contient le programme. Interfaces d'entrée -sortie : elles assurent la liaison entre l'unité centrale et le monde extérieur (adaptation des signaux). Bus de données : comme son nom l'indique, c'est par cette voie là que vont transiter les informations entre les différents organes. Il est commun à tout le monde. Mais plusieurs composants ne peuvent pas parler simultanément sur ce bus. Cela veut donc dire que la prise de parole sur le bus suit un ordre hiérarchique et que seulement deux composants peuvent dialoguer entre eux en même temps. Pendant ce temps les autres attendent. Même si cela peut paraître comme une limitation, elle est nécessaire car il est impossible de multiplier les bus de données. On devrait avoir dans ce cas un nombre de bus trop important, ce qui serait ingérable. De toute façon l'unité centrale ne peut tenir qu'une seule communication en même temps. Bus d'adresse : il indique l'endroit de destination des informations. Chaque composant possède sa propre plage d'adresse (voir plus bas). Bus de commande : il indique comment doit être traitée l'information. Par exemple pour une mémoire cela peut être une lecture ou une écriture. Chaque organe donné dans le schéma ci-dessus joue un rôle dans la fonction globale de traitement de l'information. Mais pour pouvoir dialoguer, il a besoin de bus. Ce sont tout simplement des fils sur lesquels vont transiter les signaux électriques porteurs de l'information. Ces signaux ont des caractéristiques bien déterminées en fonction de l'environnement du bus. A cela, il faut ajouter le protocole de dialogue utilisé pour que chacun puisse utiliser le bus de manière polie et non anarchique. Le tout constitue le bus. Dans le schéma on peut voir qu'il y a trois bus différents, qui ont chacun leur fonction. Ils sont bidirectionnels (c'est à dire que les informations circulent dans les deux sens) et ont une largeur (nombre de fils) dépendant de choix technologiques. Par exemple le microprocesseur pentium a un bus d'adresse de 32 bits, ce qui lui permet d'adresser jusqu'à 4 Go de mémoire vive (2 32 =4 Go). 1.2 FONCTIONNEMENT Le fonctionnement des systèmes numériques est schématiquement toujours le même, même si aujourd'hui il est de plus en plus complexe. Il suit les étapes suivantes : 1. Aller chercher l'instruction à exécuter dans la mémoire morte (qui est la mémoire de programme). 2. Aller chercher la (ou les) donnée(s) (si besoin car parfois ce n'est pas nécessaire) sur laquelle l'instruction doit opérer en mémoire vive. 3. Exécuter l'instruction. 4. Ranger le résultat dans la mémoire vive. 5. Recommencer. Cette suite d'opérations se répète jusqu'à la fin du programme. SRUCTURE FONCTIONNELLE MATÉRIELLE ET LOGICIELLE DES SYSTÈMES DE TRAITEMENT DE L'INFORMATION page 2/5
1.3 ESPACE D'ADRESSES Sauf execption et pour parler de manière générale, seule l'unité centrale engage le dialogue avec les différents organes du système. Pour les différencier et communiquer avec eux, il faut leur allouer ce que l'on appelle une plage adresse. C'est à dire qu'il faut leur donner un ensemble de nombres (qui sont des adresses) pour pouvoir dialoguer avec eux. Ainsi chaque système possède son propre plan d'adressage indiquant quelles adresses sont affectées à quelle composant. Exemple On suppose avoir un système doté d'un bus d'adresse de 20 bits (soit 65536). Pour le plan d'adressage, on utilise ce type de représentation : Autres périphériques EEPROM 2 8 ko EEPROM 1 8kO RAM 4 2kO RAM 3 2kO RAM 2 4kO RAM 1 4kO 0h7000 0h5000 0h3000 0h2800 0h2000 0h1000 0h0000 etc Première adresse de la RAM 2 Première adresse de la RAM 1 D'après le plan, on peut voir que le système possède 4 RAM dont 2 ont une capacité de 4 ko et 2 autres ayant une capacité de 2 ko. Elles serviront au rangement temporaire des données. Il y a aussi 2 EEPROM (Electrical Erasable Programmable Read Only Memory) de 8 ko chacune contenant le programme. Les autres adresses serviront à d'autres périphériques. Le choix de l'emplacement des différents composants dépend de contraintes particulières qui peuvent être liées au matériel ou au logiciel, le plan d'adressage aurait pu être complètement différent sans nuire au fonctionnement du système. SRUCTURE FONCTIONNELLE MATÉRIELLE ET LOGICIELLE DES SYSTÈMES DE TRAITEMENT DE L'INFORMATION page 3/5
2. STRUCTURE LOGICIELLE Qu'est ce qu'un langage informatique? C'est un codage particulier qui permet de faire le lien entre l'algorithme et le programme souhaité. Les machines fonctionnant grâce à un programme, ne comprennent qu'un seul langage : c'est le langage binaire qui n'est fait que de 0 et de 1. C'est ce qu'on appelle un langage de bas niveau (c'est meme le plus bas qu'il puisse y avoir). C'est donc le langage le plus proche de la machine mais difficilement compréhensible pour les humains (même très difficile!). En règle général, chaque système numérique (processeur et microcontrôleur) possède son propre langage binaire. Ce qui veut dire qu'il peut y avoir autant de langages qu'il y a de composants différents. Dans la réalité, chaque fabricant invente son propre langage et l'adapte sur plusieurs de ses produits. C'est pourquoi tous les microcontrôleurs de la marque ATMEL comprennent le même langage (on ne va pas réinventer la poudre à chaque fois...). Pour écrire des programmes il est absolument impossible de le faire en langage binaire, car si tel était le cas il faudrait des siècles pour pouvoir écrire n'importe lequel des programmes modernes actuels. La technique est donc d'utiliser des langages beaucoup plus évolués donc plus faciles à comprendre pour l'être humain. Le langage C, le C++, le Java, Perl, Python, etc sont autant d'exemple permettant de s'affranchir des contraintes de la programmation de bas niveau. Chacun possède une syntaxe et une grammaire particulière qui lui est propre (cependant on trouve souvent des ressemblances entre ces langages). Quel est alors le lien entre un langage de haut niveau et le langage binaire? La réalisation d'un programme suit toute une chaîne de développements permettant d'arriver à l'exécutable final (donc en langage binaire). Ces étapes sont au nombre de 3 et se déroulent de la manière suivante : l'édition : pendant cette phase, on écrit un fichier source dans un langage déterminé. C'est le plus souvent un fichier texte, mais cela peut aussi être un fichier graphique comme sous AUTOMGEN. La compilation : Pendant cette phase, le fichier source est transformé en fichier binaire par le biais d'un autre programme que l'on appelle compilateur. Le déboguage : avant d'implanter le programme il peut être nécessaire de le vérifier et de corriger les éventuelles erreurs (il est rare quand il n'y en ait pas). Pour cela on utilise un autre logiciel appelé débogueur et qui permet de simuler le programme. Les options que ces logiciels proposent permettent de cibler l'erreur beaucoup plus rapidement que de tâtonner jusqu'à tomber dessus (nous l'utiliserons aussi en TP). l'implantation: une fois que tout est terminé, il n'y a plus qu'à implanter le programme dans le système cible, c'est à dire un automate ou bien un microcontrôleur par le biais d'un câble. Le schéma donné en annexe vous résume tout le processus de création et de chargement d'un programme. SRUCTURE FONCTIONNELLE MATÉRIELLE ET LOGICIELLE DES SYSTÈMES DE TRAITEMENT DE L'INFORMATION page 4/5
ANNEXE Processus de création et de chargement d'un programme dans un système numérique programmable Fichier source Fichier binaire // Fichier écrit par moi #include <stdio.h> #include <conio.h> void main (void) { printf("le cours est génial!"); } // Fin du programme Compilation 110001100101001010 100101001001010010 101001010001111110 111110101000010111 010101101010010010 101001010100111000 010010111111110101 001011000000111111 111110010000011111 111101001001000101 010101001111111111 111111000001010101 11000001110011011 Déboguage Implantation dans le système cible SRUCTURE FONCTIONNELLE MATÉRIELLE ET LOGICIELLE DES SYSTÈMES DE TRAITEMENT DE L'INFORMATION page 5/5