Changes between Version 141 and Version 142 of Archi-1-TP9
- Timestamp:
- Nov 21, 2021, 7:55:23 AM (3 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Archi-1-TP9
v141 v142 32 32 **Récupération du code du TP** 33 33 34 * **Vous devez avoir installé le simulateur du prototype almo1 et la chaine de cross-compilation MIPS ([wiki:Howto-TP page Config2.2 et 3.2])**35 * Téléchargez **[htdocs:files/tp1.tgz l'archive code du tp1]** et placez là dans le répertoire `~/kO6`(ou dans le répertoire que vous avez choisi, relisez la page sur la configuration si ce n'est pas clair).34 * **Vous devez avoir installé le simulateur du prototype almo1 et la chaine de cross-compilation MIPS ([wiki:Howto-TP Config sections 2.2 et 3.2])** 35 * Téléchargez **[htdocs:files/tp1.tgz l'archive code du tp1]** et placez là dans le répertoire **`~/kO6`** (ou dans le répertoire que vous avez choisi, relisez la page sur la configuration si ce n'est pas clair). 36 36 * Ouvrez un `terminal` 37 37 * Allez dans le répertoire `kO6` : **`cd ~/kO6`** 38 * Décompressez l'archive du tp1 : **`tar xvzf tp1.tgz`**38 * Décompressez l'archive du tp1 (dans le répertoire **`kO6`**) : **`tar xvzf tp1.tgz`** 39 39 * Exécutez la commande **`cd ; tree -L 1 kO6/tp1/`**.\\ 40 40 ''(si vous n'avez pas `tree` sur votre Linux, vous pouvez l'installer, c'est un outil utile, mais pas indispensable pour ces TP)''\\ 41 Vous devr iez obtenir ceci:41 Vous devrez obtenir ceci: 42 42 {{{#!bash 43 43 kO6/tp1 … … 61 61 62 62 Les trois figures ci-dessous donnent des informations sur l'architecture du prototype **almo1** sur lequel vous allez travailler. 63 * À gauche, vous avez un schéma de connexionsimplifié.63 * À gauche, vous avez un schéma simplifié. 64 64 * Au centre, vous avez la représentation des 4 registres internes du contrôleur de terminal `TTY` nécessaires pour commander un couple écran-clavier. 65 * À droite, vous avez la représentation de l'espace d'adressage implémenté pour leprototype.65 * À droite, vous avez la représentation de l'espace d'adressage du prototype. 66 66 67 67 [[Image(htdocs:img/almo1.png,nolink,height=300)]] … … 74 74 1. Il y a deux mémoires dans **almo1** : RAM et ROM. Qu'est-ce qui les distinguent et que contiennent-elles ? 75 75 {{{#!protected ------------------------------------------------------------------------------------ 76 ''''''''''''''' 76 '' 77 Cours 9 / slides 6 et 9 77 78 * La ROM est une mémoire morte, c'est-à-dire en lecture seule. Elle contient le code de démarrage du prototype. 78 79 * La RAM est une mémoire vive, c'est-à-dire pouvant être lue et écrite. Elle contient le code et les données. 79 '' '''''''''''''80 '' 80 81 }}} 81 82 1. Qu'est-ce l'espace d'adressage du MIPS ? Quelle taille fait-il ?\\Quelles sont les instructions du MIPS permettant d'utiliser ces adresses ? Est-ce synonyme de mémoire ? 82 83 {{{#!protected ------------------------------------------------------------------------------------ 83 ''''''''''''''' 84 '' 85 Cours 9 / slide 7 84 86 * L'espace d'adressage du MIPS est l'ensemble des adresses que peut former le MIPS. 85 87 * Les adresses sont sur 32 bits et désignent chacune un octet, il y a donc 2^32^ octets. 86 88 * On accède à l'espace d'adressage avec les instructions load/store (`lw`, `lh`, `lb`, `lhu`, `lbu`, `sw`, `sh`, `sb`). 87 89 * Non, les mémoires sont des composants contenant des cases de mémoire adressable. Les mémoires sont placées (on dit aussi « ''mappées'' » dans l'espace d'adressage). 88 '' '''''''''''''90 '' 89 91 }}} 90 92 1. Dans quel composant matériel se trouve le code de démarrage et à quelle adresse est-il placé dans l'espace d'adressage et pourquoi à cette adresse ? 91 93 {{{#!protected ------------------------------------------------------------------------------------ 92 ''''''''''''''' 94 '' 95 Cours 9 / slide 6 et 7 93 96 * Le code de boot est dans la mémoire ROM. 94 97 * Il commence à l'adresse `0xBFC00000` parce que c'est l'adresse qu'envoie le MIPS au démarrage. 95 '' '''''''''''''98 '' 96 99 }}} 97 100 1. Quel composant permet de faire des entrées-sorties dans almo1 ?\\Citez d'autres composants qui pourraient être présents dans un autre SoC ? 98 101 {{{#!protected ------------------------------------------------------------------------------------ 99 ''''''''''''''' 102 '' 103 Cours 9 / slide 6 + connaissances personnelles 100 104 * Ici, c'est le composant `TTY` qui permet de sortir des caractères sur un écran et de lire des caractères depuis un clavier. 101 105 * Dans un autre SoC, on pourrait avoir un contrôleur de disque, un contrôleur vidéo, un port réseau Ethernet, un port USB, des entrées analogiques (pour mesurer des tensions), etc. 102 '' '''''''''''''106 '' 103 107 }}} 104 108 1. Il y a 4 registres dans le contrôleur de `TTY`, à quelles adresses sont-ils placés dans l'espace d'adressage ?\\Comme ce sont des registres, est-ce que le MIPS peut les utiliser comme opérandes pour ses instructions (comme add, or, etc.) ?\\Dans quel registre faut-il écrire pour envoyer un caractère sur l'écran du terminal (implicitement à la position du curseur) ?\\Que contiennent les registres `TTY_STATUS` et `TTY_READ` ?\\Quelle est l'adresse de `TTY_WRITE` dans l'espace d'adressage ? 105 109 {{{#!protected ------------------------------------------------------------------------------------ 106 ''''''''''''''' 110 '' 111 Cours 9 / slide 10 107 112 * Le composant `TTY` est placé à partir de l'adresse `0xD0200000`. 108 113 * Non, ce sont des registres de périphériques placés dans l'espace d'adressage et donc accessibles par des instructions load/store uniquement. 109 114 * Pour écrire un caractère sur l'écran, il faut écrire le code ASCII du caractère dans le registre `TTY_WRITE` 110 115 * `TTY_STATUS` contient 1 s'il y a au moins un caractère en attente d'être lu, `TTY_READ` contient le code ASCII du caractère tapé au clavier si `TTY_STATUS==1` 111 '' '''''''''''''116 '' 112 117 }}} 113 118 1. Le contrôleur de `TTY` peut contrôler de 1 à 4 terminaux. Chaque terminal dispose d'un ensemble de 4 registres (on appelle ça une carte de registres, ou en anglais une ''register map''). Ces ensembles de 4 registres sont placés à des adresses contiguës. S'il y a 2 terminaux (`TTY0` et `TTY1`), à quelle adresse est le registre `TTY_READ` de `TTY1` ?