ARO2 – Architecture des Ordinateurs 2 - Laboratoire Microarchitecture MEMORY
- 2 -
Fichiers
Vous devez charger à partir du site REDS un .zip contenant un répertoire « workspace_labo4 »
avec :
• Le fichier de travail Logisim (contenant tous les blocs PRODIS)
• Le fichier source du code assembleur main.S (contenant un programme)
• Le fichier Makefile (ne doit pas être modifié) contenant les directives d’assemblage
Attention : Vous ne devez pas utiliser les fichiers du précédent labo. Créez un nouveau répertoire.
PRODIS, processeur didactique :
• Architecture ARM9 modifiée
• Bus adresses et bus données 16 bits
• 8 registres
• Quatre interruptions matérielles
• Pas de modes, pas d’exceptions
• Jeu d’instruction (réduit) 16 bits ARM Thumb
Donnée : 4 périodes en laboratoire + travail personnel
Créez un répertoire de travail ARO2_Ma_Memory à partir du répertoire « workspace_labo4 »
fourni. Ce répertoire doit contenir le fichier *.circ et les fichiers main.S, Makefile.
N’oubliez pas de relire votre cours ARO2 « Micro-architecture d’un processeur - La partie
MEMORY ACCESS » qui contient toutes les informations et exemples de circuit nécessaires
pour réaliser ce labo.
Etape 1 : Le processeur PRODIS complet est fourni. La mémoire qui vous est fournie est divisée en
deux blocs de 8bits, chacun adressé en mots de 16 bits. Il faut donc lire, pour une adresse donnée,
les 8 bits de poids fort sur la mémoire Mem_High, et les 8 bits de poids faible sur la mémoire
Mem_Low.
a) - Ecrivez un programme en assembleur qui effectue une écriture de deux mots aux adresses
0x0004 et 0x0006, puis effectuez une lecture, en utilisant les instructions LDRH et STRH.
- Que constatez-vous pour les adresses des mémoires Mem_High et Mem_Low où ont été
écrits ces 2 mots ? Pourquoi l’adresse donnée dans l’instruction ne correspond pas ?
- Relevez le chronogramme avec tous les bus et signaux de contrôle de la mémoire de
données.
Astuce : Pour écrire une valeur de 16 bits dans un registre, chargez une valeur immédiate de 8 bits
dans le registre, « shifter » la valeur du registre puis effectuer un OR avec un autre registre.