Français
Électronique industrielle

MMU

Initiales de « memory management unit » (unité de gestion de mémoire).

MMU: matériel qui traduit les adresses pour un accès sécurisé à la mémoire

Une unité de gestion de mémoire (MMU) est un composant matériel, généralement intégré dans une puce de processeur, qui traduit les adresses de mémoire logiques (ou virtuelles) générées par un programme en cours d'exécution en adresses physiques sur la RAM réelle. Lorsqu'un logiciel demande des données à l'emplacement mémoire 0x1000, la MMU intercepte cette requête, consulte ses tables de traduction et ordonne au matériel de récupérer les données à l'adresse physique réelle, qui pourrait être 0x5A000 ou n'importe où ailleurs. Cette traduction se produit en nanosecondes et est transparente pour l'application.

Le rôle principal d'une MMU est la protection de la mémoire et l'isolation des adresses. Chaque processus s'exécutant sur un système obtient son propre espace d'adressage virtuel, commençant généralement à l'adresse zéro. La MMU garantit qu'un programme ne peut pas accidentellement (ou malicieusement) lire ou écrire dans la mémoire appartenant à un autre programme ou au noyau. Elle le fait en maintenant des tables de pages, qui sont des structures de recherche qui mappent les pages virtuelles aux cadres physiques, chacun étant marqué avec des permissions d'accès. Si un programme tente d'écrire dans une mémoire pour laquelle il n'a pas de droits, la MMU signale une erreur et le système d'exploitation termine le processus incriminé.

Conception physique et fonctionnement

Une MMU fonctionne généralement à la granularité des pages, couramment 4 Ko sur les processeurs x86 et ARM, bien que certains systèmes prennent en charge des tailles de page variables ou plus grandes. La traduction se fait via une « page walk »: le processeur présente une adresse virtuelle, la MMU recherche les tables de pages (souvent une structure arborescente à plusieurs niveaux pour économiser de la mémoire) et récupère l'adresse physique correspondante et les bits de permission. Les MMU modernes incluent un « translation lookaside buffer » (TLB), un petit cache associatif qui stocke les traductions récemment utilisées; un « TLB hit » renvoie une adresse physique en un ou deux cycles, tandis qu'un « TLB miss » nécessite une « page table walk » complète, ce qui coûte des dizaines ou des centaines de cycles.

Les MMU sont essentielles aux systèmes d'exploitation modernes. Sans elles, chaque programme devrait être chargé à un emplacement fixe et ne devrait pas dépasser ses limites; cela rend le multitâche difficile et la sécurité presque impossible. Avec une MMU, le système d'exploitation peut charger des programmes n'importe où dans la mémoire physique, échanger les pages inactives vers le disque et empêcher un processus d'en faire planter d'autres. Les systèmes embarqués sans MMU (tels que les microcontrôleurs exécutant du code « bare-metal » ou de simples noyaux RTOS) sacrifient ces protections pour une latence plus faible et un matériel plus simple.

Lorsqu'une MMU tombe en panne ou est mal configurée, l'accès à la mémoire devient peu fiable. Un TLB défectueux ou une table de pages corrompue peut entraîner la lecture ou l'écriture silencieuse de données incorrectes par un processus, ou des erreurs répétées sur des adresses valides. Les développeurs qui dépannent la corruption de la mémoire ou les erreurs de page doivent comprendre comment la MMU traduit les adresses, c'est pourquoi les débogueurs de bas niveau et les outils du noyau fournissent des commandes pour inspecter les tables de pages et le contenu du TLB.

Sources

Entrée IG659909/04/2015

Autres termes : Électronique industrielle

Tout voir

Recevez le mot du jour

Un terme industriel chaque jour, avec le métier auquel il appartient et pourquoi il mérite d'être connu. Sans publicité.