# SMC Compte Rendu TP7
## Binôme
* Guillaume VACHERIAS : 21204391
* Yann QUERIC : 28712032
## Question
### Question 1
*Quelle est la taille (en octets) de l'espace d'adressage physique. Quelle est la taille de l'espace virtuel?*
La taille de l'adressage physique a une taille de 1 Tera-octet(40bits). La taille virtuel est défini de base sur une adresse de 32 bits, qui ce traduit en adresse physique de 40 bits. Cependant tant que la MMU data est activé l'adresse virtuel passe a 40 bits avec concaténation de 8 bits de poits fort qui correspondent au coordonnées du cluster cible de la transaction.
### Question 2
*Quelles sont les tailles des tables de 1er et 2e niveau d'une table de page ?*
On utilise une taille de table de page égal à 4096 octets pour tout les niveaux de page. On peut retrouver la valeurs défini dabns le fichier `fft.c` la constantes `#define PAGE_SIZE 4096`
### Question 3
Les bits V et D dans les tables de 1er et de 2e niveau indiquent respectivement si la page est valide (V) et si la page a été modifié/dirty (D).
### Question 4
*Quel est le nombre d'entrées de chaque TLB ?*
Il existe 64 entrée.
### Question 5
*Que signifie LL/SC ? À quoi servent ces instructions ?*
LL signigie **Linked Load** et SC signifie **Store Conditionnal**.
Une transaction LL permet de cibler n'importe quel mot contenu dans le memory cache. La réponse de cette transaction renvoi 2 valeurs de 32 bits correspondant à l'adresse du donnés et à la signature alloué par le memory cache pour la transaction LL.
Une transaction SC permet aussi de cibler un mot dans le memory cache. La commande transporte les nouvelle donné et la signature après la transaction LL. La réponse retourne un Boolean indiquant le succès ou non de la transaction.
### Question 6
*Combien de réseaux DSPINs indépendants interconnectent les caches L1 et les caches L2 ? Pourquoi ?*
L'interconnect global comporte 5 réseaux DSPIN indépendants ayant chacun une topologie de grille 2D. En effet, chaque interconnect local est composé dans chaque cluster de 5 crossbar.
5 dont 2 DSPIN requête et 2 réponse. (en général)
Processeur vers L1 : 3
L1 vers L2 : 2 pour les evincements (cleanup)
### Question 7
*Dans quel fichier doit-on indiquer le nombre de cores et le nombre de clusters ?*
Dans le fichier *arch_info.bin*, on peut définir les caractéristiques de l'architecture matérielle notamment :
* Nombre de clusters
* Nombre de coeurs dans chaque cluster
* Taille de la mémoire physique dans chaque cluster
* Nombre et types des périphériques
### Question 8
*Quelle est la différence entre le bootloader et le preloader ?*
Un *Preloader* permet de charger en RAM le code du *Bootloader* correspondant à l'OS qu'on veut. Le *Preloader* est spécifique pour l'architecture du système et indépendant du système d'exploitation.
Le *Bootloader* est spécifique à la fois à l'architecture et à l'OS. En effet, il charge en mémoire le code de l'OS.
### Question 9
*Dans quel(s) cluster(s) est stocké le code du noyau almos-mkh?*
Cluster 0, coeur 0
### Question 10
*Les données du noyau sont-elles répliquées dans tous les clusters, ou sont-elles distribuées sur tous les clusters ?*
On réplique les données du noyau sur tous les clusters. Étant donné qu'on retrouve une instance du noyau pour chaque cluster, on réplique ainsi les segment seg_kcode et seg_kdata.
### Question 11
*À quoi sert le fichier ldscript utilisé pour la production d'un exécutable ?*
Le script ldscript est utilisé par l'éditeur de lien pour mapper les differentes section produite par le compilateur dans l'espace d'adressage de l'application.
### Question 12
*Pourquoi toutes les applications utilisateur utilisent-t-elles le même ldscript ?*
Les applications utilisent le même ldscript pour permettre à l'application d'executer qu'un seul executable.
### Question 13
*Pourquoi doit-on modifier l'image disque utilisée par TSAR pour ajouter une application ?*
L'image disque contient les fichiers :
* **boot.elf**
* **arch_info.bin**
* **kernel.elf**
* fichier applications contenu dans le répertoire **/bin/user**
Ainsi pour charger une application, on modifie les fichiers contenu dans **/bin/user** donc une modification de l'image disque doit être effectuer