Qu'est-ce que l'accès direct à la mémoire (DMA) et comment fonctionne-t-il? [MiniTool Wiki]
What Is Direct Memory Access
Navigation Rapide :
Vous pouvez adopter le RDMA technologie permettant aux ordinateurs d'un réseau d'échanger des données dans la mémoire principale sans impliquer le processeur, le cache ou le système d'exploitation de l'un ou l'autre des ordinateurs. Mais vous pouvez également utiliser la fonction DMA pour envoyer directement les données d’un périphérique connecté à la mémoire de la carte mère de l’ordinateur. Ce message de MiniTool parle principalement de DMA.
La définition de l'accès direct à la mémoire
Tout d'abord, qu'est-ce que l'accès direct à la mémoire? L'accès direct à la mémoire peut être abrégé en DMA, qui est une caractéristique des systèmes informatiques. Il permet aux périphériques d'entrée / sortie (E / S) d'accéder à la mémoire système principale ( mémoire vive ), indépendante de l'unité centrale (CPU), ce qui accélère les opérations mémoire.
Pointe: Vous pourriez être intéressé par ce post - 8 solutions utiles pour réparer votre processeur à 100% sous Windows 10 .
Sans accès direct à la mémoire, lorsque la CPU utilise des entrées / sorties programmées, elle est généralement entièrement occupée pendant toute l'opération de lecture ou d'écriture, de sorte qu'elle ne peut pas effectuer d'autres tâches. Avec DMA, la CPU lance d'abord le transfert, puis exécute d'autres opérations pendant que le transfert est en cours et reçoit finalement une interruption du contrôleur DMA (DMAC) lorsque l'opération est terminée.
L'accès direct à la mémoire est utile chaque fois que le processeur ne peut pas suivre le taux de transfert de données ou lorsque le processeur doit effectuer un travail en attendant des transferts de données d'E / S relativement lents.
Plusieurs systèmes matériels adoptent l'accès direct à la mémoire, tels que les contrôleurs d'unité de disque, les cartes graphiques, les cartes réseau et les cartes son. Le DMA est également utilisé pour le transfert de données sur puce dans les processeurs multicœurs. Par rapport aux ordinateurs sans canaux d'accès direct à la mémoire, les ordinateurs dotés de canaux DMA peuvent transférer des données entre des périphériques avec beaucoup moins de temps système.
L'accès direct à la mémoire peut également être utilisé pour «de la mémoire à la mémoire» pour copier ou déplacer des données en mémoire. Il peut transférer des opérations mémoire coûteuses (telles que des copies volumineuses ou des opérations de regroupement par dispersion) du processeur vers un moteur DMA dédié. Le DMA est important dans les architectures de réseau sur puce et de mémoire.
Comment fonctionne l'accès direct à la mémoire?
Alors, comment fonctionne l'accès direct à la mémoire? L'accès direct à la mémoire standard (également appelé DMA tiers) adopte un contrôleur DMA. Le contrôleur DMA peut produire des adresses mémoire et lancer des cycles de lecture ou d'écriture de la mémoire. Il couvre plusieurs registres matériels qui peuvent être lus et écrits par le CPU.
Ces registres se composent d'un registre d'adresse mémoire, d'un registre de comptage d'octets et d'un ou plusieurs registres de contrôle. En fonction des fonctionnalités fournies par le contrôleur d'accès direct à la mémoire, ces registres de contrôle peuvent désigner une combinaison de source, de destination, de sens de transfert (lecture ou écriture sur le périphérique d'E / S), la taille de l'unité de transfert et / ou le nombre de octets à transférer en une rafale.
Pour effectuer des opérations d'entrée, de sortie ou de mémoire à mémoire, le processeur hôte initialise le contrôleur DMA avec le nombre de mots à transférer et l'adresse mémoire à utiliser. Ensuite, le CPU commande au périphérique de commencer le transfert de données.
Ensuite, le contrôleur d'accès direct à la mémoire propose des adresses et des lignes de contrôle de lecture / écriture dans la mémoire système. Chaque fois qu'un octet de données est préparé pour être transféré entre le périphérique et la mémoire, le contrôleur DMA incrémente son registre d'adresses interne jusqu'à ce qu'un bloc de données complet soit transféré.
Modes de fonctionnement
L'accès direct à la mémoire fonctionne différemment dans différents modes de fonctionnement.
Mode rafale
En mode rafale, le bloc de données complet est transmis dans une séquence continue. Une fois que le CPU autorise le contrôleur DMA à accéder au bus système, le contrôleur DMA transférera tous les octets de données dans le bloc de données avant de relâcher le contrôle des bus système vers le CPU, mais cela rendra le CPU inactif pendant un certain temps. temps considérable. Ce mode est également appelé «Mode de transfert de bloc».
Mode de vol de cycle
Le mode de vol de cycle est utilisé dans un système où la CPU ne peut pas être désactivée pendant la durée requise pour le mode de transfert en rafale. Dans le mode de vol de cycle, le contrôleur DMA obtient l'accès au bus système en utilisant les signaux BR (Bus Request) et BG (Bus Grant), qui sont les mêmes que le mode rafale. Ces deux signaux contrôlent l'interface entre la CPU et le contrôleur DMA.
D'une part, dans le mode de vol de cycle, la vitesse de transmission du bloc de données n'est pas aussi rapide qu'en mode rafale, mais d'autre part, le temps d'inactivité CPU n'est pas aussi long qu'en mode rafale.
Mode transparent
Le mode transparent prend le plus de temps pour transférer les blocs de données, mais c'est aussi le mode le plus efficace en termes de performances globales du système. En mode transparent, le contrôleur d'accès direct à la mémoire transfère les données uniquement lorsque l'UC effectue des opérations n'utilisant pas les bus système.
Le principal avantage du mode transparent est que le CPU n'arrête jamais d'exécuter ses programmes, et les transferts Direct Memory Access sont gratuits en termes de temps, tandis que l'inconvénient est que le matériel doit déterminer quand le CPU n'utilise pas les bus système, ce qui peut être compliqué. Ceci est également appelé «mode de transfert de données DMA caché».