| | 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 | }}} |