Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Chapitre 3 L’accès aux données
2
Les mémoires Toute information est représentée sous forme binaire
Un prix, un texte légal, une image, du son, etc. Transformée en binaire, on l’appelle des données. Pour utiliser les données stockées en mémoire secondaire (disque, ruban, etc.) elles doivent passer par le bus C’est le goulot d’étranglement Afin d’assurer un accès rapide, on utilise plusieurs unités de stockage.
3
Les mémoires Registre Mémoire cache Mémoire centrale (RAM, ROM, VRAM)
Plus rapide, plus couteux, plus petit Mémoire cache Jusqu’à dix fois plus rapides que la mémoire principale, plusieurs niveaux Mémoire centrale (RAM, ROM, VRAM) Plus volatile Disque et ruban (disque/SSD/CD, DVD, …) Permet de garder des données sur une plus longue période Coût très faible, très grande capacité, très lent Dois transiter par la mémoire centrale pour être utilisée
4
Les données Chaque cellule de mémoire peut contenir une donnée binaire
Entier Nombre virgule flottante Caractères Bits et chaînes de bits Adresses L’interprétation est laissée au programme qui l’utilise.
5
Les adresses Chaque cellule de mémoire est désignée par une adresse.
Entier binaire de longueur « n » 2 𝑛 cellules 0 à 2 𝑛 −1 Dans le code d’un programme Adresse numérique Adresse symbolique Adresse effective Obtenue à partir de transformations sur une adresse initiale Adresse indexée Adresse indirecte Adresse relative Mémoire virtuelle Adresse virtuelle
6
Unité de gestion mémoire
Vie d’un programme Création (Éditeur de texte) Adresses numériques (rares), Adresses symboliques, Modes d’adressage Traduction (Assembleur) Programme source Adresses numériques, Adresses symboliques (rares), Modes d’adressage Édition des liens (Éditeur de liens) Code Objet Librairies statiques Adresses numériques, Modes d’adressage Chargement (Chargeur) Module chargeable Adresses numériques, Modes d’adressage Exécution (Processeur) Processus Mode d’adressage(Adresses numériques) = Adresse effective Unité de gestion mémoire Physique Virtuelle Physique
7
Modification d’une adresse
donnée 𝑎+𝑙 l a Module chargeable Code Objet donnée a donnée 𝑎+𝑙+𝑐 l a c Mémoire
8
Mode d’adressage Adressage immédiat L’opérande est dans l’instruction
Utilisé lorsque la valeur de l’opérande est constante Valeur généralement petite (RISC) Code Op Opérande
9
Mode d’adressage Adressage par registre
L’opérande est dans un registre Pratique lorsqu’un même opérande est utilisé constamment par une suite d’instruction L’instruction contient le numéro du registre Opérande Registres Code Op Numéro de registre
10
Mode d’adressage Adressage direct L’opérande est en mémoire
L’adressage est limité dans une architecture RISC L’instruction contient l’adresse de l’opérande Opérande Mémoire Code Op Adresse
11
Mode d’adressage Adressage indexé L’opérande est en mémoire
L’instruction contient le repère (adresse indexée) et un index Le repère et l’index peuvent être dans des registres, l’instruction contient alors les numéros de registre Mémoire Opérande Code Op Adresse indexée Index +
12
Mode d’adressage Adressage relatif L’opérande est en mémoire
Le repère est variable (contenu du PC) Le déplacement est contenu dans l’instruction C’est l’assembleur qui s’occupe de calculer le déplacement Très pratique Indépendant de l’emplacement du programme en mémoire Instruction Opérande Mémoire Code Op Déplacement Déplacement PC +
13
Mode d’adressage Adressage base et déplacement
L’opérande est en mémoire Le repère (base) est dans un registre L’instruction donne le numéro de registre Le déplacement est contenu dans l’instruction Mémoire Opérande Adresse de base Code Op Registre Déplacement Adresse de base Registres Déplacement +
14
Mode d’adressage Adressage immédiat différé Équivalent au mode direct
Différé Au lieu d’avoir l’opérande, on a l’adresse de l’opérande L’opérande est donc toujours en mémoire Opérande Mémoire Code Op Adresse
15
Mode d’adressage Adressage par registre différé
Le registre contient l’adresse de l’opérande Opérande Mémoire Code Op Registre Adresse Registres
16
Mode d’adressage Adressage indirect Adresse qui contient une adresse
Opérande Mémoire Code Op Adresse
17
Mode d’adressage Adressage indexé différé Code Op Adresse indexée
Mémoire Adresse indexée Adresse Opérande Code Op Adresse indexée Index Index +
18
Mode d’adressage Adressage relatif différé Code Op Déplacement PC +
Instruction Adresse Mémoire Opérande Code Op Déplacement Déplacement PC +
19
Mode d’adressage Adressage auto-incrément
L’instruction contient un numéro de registre Le registre contient l’adresse de l’opérande À la fin de l’exécution, la valeur de l’adresse est incrémentée par 𝑖 Opérande Mémoire Code Op Registre Adresse Registres Adresse effective +𝑖
20
Mode d’adressage Adressage auto-décrément
On décrémente l’adresse en premier On peut aussi faire les deux derniers modes en différé Opérande Mémoire Code Op Registre Adresse Registres −𝑖 Adresse effective
21
Mode d’adressage Adressage indirect à 𝑛 niveaux
L’adresse d’une adresse, d’une adresse… Adresse Opérande Mémoire Code Op Adresse
22
Particularités du SPARC
3 modes d’adressage pour accéder aux données Mode immédiat Mode registre Mode indexé Adresse indexée est dans un registre L’index est dans un autre registre, ou dans l’instruction Mode relatif Utilisé par les branchements Aussi pour les appels de sous-programmes
23
Particularités du SPARC
Les instructions sont encodées sur 32 bits Les registres peuvent contenir des valeurs 64 bits Les adresses font 64 bits Comment écrire une adresse de 64 bits dans une instruction longue de 32 bits?
24
Chargement d’une adresse
L’instruction sethi charge la valeur d’une expression dans les bits 10 à 31 d’un registre Pour mettre une valeur de 64 bits dans un registre, il faut : 6 instructions! sethi %hh(n), reg’ ! %hh conserve les bits 42 à 63 or reg’, %hm(n), reg’ ! %hm conserve les bits 32 à 41 sllx reg’, 32, reg’ %lm(n), reg ! %lm conserve les bits 10 à 31 reg, reg’, reg reg, %lo(n), reg ! %lo conserve les bits 0 à 9
25
Chargement d’une adresse
Exemple : 0xBE400F26FA2 sethi %hh(0xBE400F26FA2), %l1 ! %hh(n) = or %hm(0xBE400F26FA2), %l ! %hm(n) = sllx %l1, 32, %l1 64 32 %l1 1 31 64 32 %l1 1 31 1 64 32 %l1 31
26
Chargement d’une adresse
Exemple : 0xBE400F26FA2 sethi %lm(0xBE400F26FA2), %l0 ! %lm(n) = or %l0, %l1, %l0 or %l0, %lo(0xBE400F26FA2), %l0 ! %lo(n) = 64 32 %l0 1 31 1 64 32 %l0 1 31 1 64 32 %l0 1 31
27
Chargement d’une adresse
L’instruction setx remplace les 6 instructions Ne jamais la mettre dans la fente de temporisation! setx n, %l7, %l0 Les données contenues dans le registre temporaire sont perdues après un setx Adresse symbolique Registre temporaire Registre destination
28
Instructions de chargement
ldub Charge un octet non signé dans un registre. Mets les 56 bits de poids fort à 0 ldsb Charge un octet signé dans un registre. Si la valeur est positive, met des 0 dans les 56 bits de poids fort, sinon, met 1. lduh Charge un demi-mot non signé dans un registre. Mets les 48 bits de poids fort à 0. ldsh Charge un demi-mot signé dans un registre. Si la valeur est positive, met des 0 dans les 48 bits de poids fort, sinon, met 1. lduw Charge un mot non signé dans un registre. Mets les 32 bits de poids fort à 0. ldsw Charge un mot signé dans un registre. Si la valeur est positive, met des 0 dans les 32 bits de poids fort, sinon, met 1. ldx Charge un mot étendu dans un registre.
29
Instructions de stockage
stb Copie les 8 bits de poids faible du registre dans la mémoire sth Copie les 16 bits de poids faible du registre dans la mémoire stw Copie les 32 bits de poids faible du registre dans la mémoire stx Copie les 64 bits du registre dans la mémoire
30
Instructions synthétiques
Remise à zéro d’une cellule mémoire Transfert d’un registre vers un registre Remise à zéro d’un registre clrb [%l0] == stb %g0, [%l0] clrh [%l0] sth %g0, [%l0] clr [%l0] stw %g0, [%l0] clrd [%l0] stx %g0, [%l0] mov %l1, %l4 == or %g0, %l1, %l4 or %l1, %g0, %l4 clr %l1 == mov %g0, %l1 or %g0, %g0, %l1
31
Instructions synthétiques
Mettre une valeur dans un registre Si la valeur est plus petite que 2 13 Si la valeur est plus grande que 2 13 mov 518, %l6 == or %g0, 518, %l6 setx , %l7, %l0 == suite de 6 instructions
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.