ENSIMAG 1A Travaux dirigés : Architecture des ordinateurs TD 3 Conception d une carte à microprocesseur On souhaite réaliser une carte mère monoprocesseur. Le processeur utilisé dispose de interface suivante (la direction des signaux étant donnée du point de vue du processeur) : ADDR[31 :0] : un bus unidirectionnel (sortie) d adresse de 32 bits ; RW[2 :0] : un bus unidirectionnel (sortie) définissant le type d accès (mot, demi-mot ou octet) et le sens du transfert sur 3 bits ; RW 000 NO OPERATION 001 WRITE WORD 010 WRITE HALF 011 WRITE BYTE 1xx READ WORD DATA[31 :0] : un bus de données bidirectionnel (entrée-sortie) de 32 bits ; FRZ : un signal d entrée gelant le processeur (i.e. interdisant la modification de son état interne). Dans ce TD, on fait l hypothèse que FRZ est toujours à zéro ; BERR : un signal d entrée indiquant la présence d une adresse érronée. Par ailleurs, on suppose que les instructions de ce processeur sont d une taille fixe de 32 bits. Dans le TD, nous faisons l hypothèse que les aspects temporels du protocole de communication entre les différents composants sont résolus. Les questions de ce TD ont pour but de vous faire dessiner progressivement le schéma logique complet d une carte à microprocesseur. Pour cela il est important de respecter les indications de positionnement des composants fournies. Processeur Question 1 Quelle est la zone de mémoire adressable par le processeur décrit ci dessus? Sur une feuille représenter sous la forme d un rectangle la zone de mémoire, en y faisant figurer l adresse de la première case et l adresse de la dernière case (valeur donnée en Hexa). Les adresses étant sur 32 bits, on a 2 32 = 4294967296 octets adressables, soit des adresses en hexa allant de 0x00000000 à 0xFFFFFFFF. La représentation graphique de la mémoire et des différentes zones est donnée en question 5. 2
Question 2 Quelle est la taille d une case mémoire adressable par le processeur étudié? ADDR désigne l adresse d un octet mais le bus de données manipule des données 32 bits. On accède donc aux octets de la mémoire 4 par 4. Donc seuls les bits ADDR[31 :2] seront utilisés pour accéder à la mémoire (notion d alignement). Par exemple, si l on souhaite accéder à l octet qui se situe à l adresse 0xFF00AB02, on lira en mémoire les quatres octets situés aux adresses 0xFF00AB00...0xFF00AB03 Question 3 Sur le côté gauche de la feuille, au centre, dessiner la représentation graphique du processeur avec ses connecteurs. Préciser la direction de ceux-ci et la taille des bus. Voir correction question 6 Les ROM On souhaite connecter à ce processeur trois mémoires de type ROM, contenant respectivement le code exécuté par le processeur lors d un reset, le code exécuté par le processeur lors d une exception, et le code du programme principal. Les ROM de reset et d exception ont une taille de 4 Koctets, et fournissent leurs données directement sur 32 bits. Elles doivent être situées respectivement à partir des adresses 0xBFC00000 (reset) et 0x80000000 (exception). La ROM de code fait 64 Koctets, fournit aussi ses données sur 32 bits, et est accessible à partir de l adresse 0x00400000. En plus des bus d adresse et de données, chaque ROM dispose d une entrée de sélection OE (Output Enable, active au niveau bas) permettant de faire passer la sortie de données de la ROM de l état «électriquement déconnecté» à l état «mémoire connectée sur le bus de données». Question 4 Determiner le nombre de bits nécessaires à l adressage de chacune des ROM. D après l énoncé, les ROM fournissent leurs données sur 32 bits, soit 4 octets (=1 mot). Les ROM de reset et d exception font 4 Ko soit 1024 = 2 10 mots donc ces ROM ont 10 bits d adresse. La ROM de code quant à elle fait 64 Ko soit 16384 = 2 14 mots donc elle a 14 bits d adresse. Question 5 Compléter le schéma de la mémoire en y faisant figurer les emplacements des ROM.(Attention à la taille des cases mémoires!!!) 3
Question 6 Un petit peu en bas et à droite du microprocesseur précédemment représenté, dessiner les trois composants ROM (reset, exception, code de gauche à droite, en prévoyant un espace entre le CPU et le premier boîtier de reset). Préciser la direction de ceux-ci, la taille des bus, et comment le bus d adresse (resp. de données) du processeur est relié au bus d adresse (resp. de données) des ROM. 4
Décodage d adresse des ROM instructions En fonction de l adresse émise par le processeur, un des trois boîtiers doit être sélectionné si le CPU cherche à accéder à la prochaine instruction. Suivant la valeur de l adresse, il faut donc sélectionner un boîtier : c est le rôle de la logique de décodage. Question 7 Quels sont les signaux qui doivent intervenir comme entrées du bloc logique de décodage? Les signaux d entrée du bloc sont RW[2] et [32 :12] Question 8 Quels sont les signaux qui doivent intervenir comme sortie du bloc logique de décodage? Les signaux de sortie sont l adresse est invalide OE Code, OE Exception, OE Reset ainsi que BERR qui indique que Question 9 Le bloc logique de décodage doit être dessiné entre le processeur et le premier boîtier ROM. Proposer un schéma du bloc logique de décodage, en supposant que 5
l on fait un décodage complet (un boîtier ROM n est vu qu à une seule adresse du point de vue du processeur). 6
7
Question 10 Proposer une autre version du bloc logique de décodage, en supposant que l on fait maintenant un décodage incomplet (un boîtier ROM est vu à plusieurs adresses du point de vue du processeur). Donner alors les adresses où sont vues les boitiers ROM. Même schéma que pour la question précédente mais en n utilisant que ADDR[31 :20] au lieu de ADDR[31 :12] et en comparant à 0x800, 0xBFC et 0x004 Question 11 Rajouter un montage qui permet d activer l entrée BERR du processeur en cas d erreur d adressage. Voir schéma précédent Les RAM On souhaite connecter à la carte précédente deux boîtiers mémoire de type RAM, contenant respectivement les données utilisateur et les données superviseur. Les RAM utilisateur et superviseur ont une taille de 64 Koctets. Elles sont directement accessibles sur 32 bits mais, contrairement aux instructions qui sont exclusivement sur 32 bits, on peut y faire des accès sous forme de mot, de demi-mot et d octet. Elles doivent être situées respectivement à partir des adresses 0x10000000 (utilisateur) et 0xC0000000 (superviseur). En plus des bus d adresse et de données, chaque RAM dispose de trois entrées supplémentaires : OE (Output Enable, active au niveau bas) permettant de faire passer la sortie de données de la RAM de l état «électriquement déconnecté» à l état «mémoire connectée sur le bus de données» et donc de connecter la RAM en sortie sur le bus DATA, WE (Write Enable, active au niveau bas) qui permet de recopier la valeur proposée sur le bus DATA à l adresse considérée dans la RAM et SIZE[1 :0] (entrée de la mémoire) définit le type de transfert : SIZE 00 WORD 01 HALF WORD 1X BYTE Question 12 Un petit peu en haut et à droite du microprocesseur précédemment représenté, dessiner les deux composants RAM (utilisateur et superviseur de gauche à droite, en prévoyant un espace entre le processeur et le premier boîtier «utilisateur»). Préciser la direction de ceux-ci, la taille des bus, et comment le bus d adresse (resp. de données) du microprocesseur est relié au bus d adresse (resp. de données) des RAM. 8
Question 13 Quels sont les signaux qui doivent intervenir comme entrées du bloc logique de décodage des RAM de données? Les signaux d entrée sont ADDR[31 :16] et RW[2 :0] Question 14 Quels sont les signaux qui doivent intervenir comme sortie du bloc logique de décodage des RAM de données? Les signaux de sortie sont OE User, OE Super, WE User, WE Super, SIZE[1 :0] Question 15 Le bloc logique de décodage des RAM doit être dessiné entre le processeur et le premier boîtier RAM. Proposer un schéma du bloc logique de décodage, en supposant que l on fait un décodage complet (un boîtier RAM n est vu qu à une seule adresse du point de vue du processeur). 9
Question 16 Proposer une solution pour la génération du signal BERR à connecter sur le processeur. BERR si BERR ROM ou (RW[2 :0]!=NOP et qu aucun OE et WE n est actif) 10