Changes between Version 141 and Version 142 of Archi-1-TP9


Ignore:
Timestamp:
Nov 21, 2021, 7:55:23 AM (3 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Archi-1-TP9

    v141 v142  
    3232**Récupération du code du TP**
    3333
    34 * **Vous devez avoir installé le simulateur du prototype almo1 et la chaine de cross-compilation MIPS ([wiki:Howto-TP page Config 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). 
     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). 
    3636* Ouvrez un `terminal`
    3737* 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`**
    3939* Exécutez la commande **`cd ; tree -L 1 kO6/tp1/`**.\\
    4040  ''(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 devriez obtenir ceci:
     41  Vous devrez obtenir ceci:
    4242{{{#!bash
    4343kO6/tp1
     
    6161
    6262Les 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 connexion simplifié.
     63* À gauche, vous avez un schéma simplifié.
    6464* 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 le prototype. 
     65* À droite, vous avez la représentation de l'espace d'adressage du prototype. 
    6666
    6767[[Image(htdocs:img/almo1.png,nolink,height=300)]]
     
    74741. Il y a deux mémoires dans **almo1** : RAM et ROM. Qu'est-ce qui les distinguent et que contiennent-elles ?
    7575{{{#!protected ------------------------------------------------------------------------------------
    76 '''''''''''''''
     76''
     77Cours 9 / slides 6 et 9
    7778* La ROM est une mémoire morte, c'est-à-dire en lecture seule. Elle contient le code de démarrage du prototype.
    7879* 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''
    8081}}}
    81821. 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 ?
    8283{{{#!protected ------------------------------------------------------------------------------------
    83 '''''''''''''''
     84''
     85Cours 9 / slide 7
    8486* L'espace d'adressage du MIPS est l'ensemble des adresses que peut former le MIPS.
    8587* Les adresses sont sur 32 bits et désignent chacune un octet, il y a donc 2^32^ octets.
    8688* On accède à l'espace d'adressage avec les instructions load/store (`lw`, `lh`, `lb`, `lhu`, `lbu`, `sw`, `sh`, `sb`).
    8789* 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''
    8991}}}
    90921. 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 ?
    9193{{{#!protected ------------------------------------------------------------------------------------
    92 '''''''''''''''
     94''
     95Cours 9 / slide 6 et 7
    9396* Le code de boot est dans la mémoire ROM.
    9497* Il commence à l'adresse `0xBFC00000` parce que c'est l'adresse qu'envoie le MIPS au démarrage.
    95 '''''''''''''''
     98''
    9699}}}
    971001. Quel composant permet de faire des entrées-sorties dans almo1 ?\\Citez d'autres composants qui pourraient être présents dans un autre SoC ?
    98101{{{#!protected ------------------------------------------------------------------------------------
    99 '''''''''''''''
     102''
     103Cours 9 / slide 6 + connaissances personnelles
    100104* 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.
    101105* 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''
    103107}}}
    1041081. 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 ?
    105109{{{#!protected ------------------------------------------------------------------------------------
    106 '''''''''''''''
     110''
     111Cours 9 / slide 10
    107112* Le composant `TTY` est placé à partir de l'adresse `0xD0200000`.
    108113* 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.
    109114* Pour écrire un caractère sur l'écran, il faut écrire le code ASCII du caractère dans le registre `TTY_WRITE`
    110115* `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''
    112117}}}
    1131181. 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` ?