| 47 | == Rappel de cours sur les caches |
| 48 | |
| 49 | Je vous recommande de revoir les transparents des 2 cours sur les caches ([htdocs:cours/ALMO-2019-5_Cache.pdf Hiérarchie mémoire et techniques de cache] et [htdocs:cours/ALMO-2019-6_Cache-suite.pdf Caches (suite)]). |
| 50 | |
| 51 | {{{ |
| 52 | #!comment |
| 53 | * Le processeur dispose d'un espace d'adressage 32bits. |
| 54 | Cela veut dire qu'il peut donc former des adresses de 32bits et accéder à 2^32^ octets. |
| 55 | * Quand le processeur accède à la mémoire, il lit ou il écrit le plus souvent des mots de 4 octets. \\ |
| 56 | Un mot peut être vu comme un segment d'adresse de 4 octets.\\ |
| 57 | Les mots sont alignés, ce qui signifie que l'adresse du premier octet est un multiple de sa taille, donc multiple de 4. |
| 58 | * Les caches de niveau 1 (L1) sont placés entre le processeur et la mémoire. \\ |
| 59 | Il y a un cache pour les instructions et un cache pour les données. |
| 60 | * Les caches permettent de réduire le nombre d'accès à la mémoire en faisant une copie locale des instructions ou des données lues.\\ |
| 61 | L'efficacité des caches repose sur deux propriétés des programmes : la localité spatiale et temporelle des accès à la mémoire. |
| 62 | * La localité temporelle, c'est le fait que si un programme accède à une donnée (ou à une instruction),\\ |
| 63 | il y a une forte probabilité qu'il y accède à nouveau dans peu de temps. |
| 64 | * La localité spatiale, c'est le fait que si un programme accède à une donnée (ou à une instruction),\\ |
| 65 | il y a une forte probabilité qu'il accèdes aux adresses voisine.|i |
| 66 | * Pour profiter de ces propriétés, quand le processeur demande une donnée, il la demande au cache et si c'est la première fois\\ |
| 67 | le cache va lire la donnée demandée et les données voisines (localité spatiale)\\ |
| 68 | et les copier localement pour éviter de nouveaux accès à la mémoire lors ques prochain accès (localité temporelle). |
| 69 | * Le cache lit des petits segments d'adresses que l'on nomme des lignes de cache.\\ |
| 70 | Une ligne de cache a une taille puissance de deux octets et forcément plus grande qu'un mot, donc 8, 16, 32, voire 64 octets (rarement plus).\\ |
| 71 | Les lignes sont alignées (adresse du premier octet est multiple de sa taille). |
| 72 | * Le cache stocke les lignes de cache dans des cases de caches. |
| 73 | * Donc, quand le processeur fait une lecture de donnée le cache détermine le numéro de la ligne dans laquelle se trouve cette données |
| 74 | }}} |