Accès direct à la mémoire DMA - comment ça marche?
J'ai lu que si le DMA est disponible, alors le processeur peut itinéraire lire ou écrire des demandes de blocs de disque pour le DMA et se concentrer sur d'autres travaux. Mais, DMA à la mémoire de données/contrôle de canal est occupé au cours de ce transfert. Quoi d'autre pouvez-processeur faire pendant ce temps?
source d'informationauteur Boolean
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, DMA (en soi) est presque totalement obsolète. Comme défini à l'origine, les contrôleurs DMA dépendait du fait que le bus avait des lignes distinctes à faire valoir pour la mémoire de lecture/écriture, et j'/S en lecture/écriture. Le contrôleur de DMA a profité de l'affirmer par les deux une lecture de la mémoire d'e/S et d'écriture (ou vice versa) en même temps. Le contrôleur de DMA produits successives des adresses sur le bus, et des données ont été lues à partir de la mémoire et de l'écrit à un port de sortie (ou vice versa) à chaque cycle de bus.
Le bus PCI, cependant, ne pas ont des lignes distinctes pour la mémoire de lecture/écriture d'e/S et en lecture/écriture. Au lieu de cela, il code pour un (et un seul) de commande pour une transaction donnée. Au lieu d'utiliser le DMA, le PCI n'a normalement de bus-mastering transferts. Cela signifie à la place d'un contrôleur de DMA que les transferts de mémoire entre le périphérique d'e/S et de la mémoire, les périphériques d'e/S se transfère directement les données vers ou à partir de la mémoire.
Que ce que le PROCESSEUR peut faire à la fois, tout dépend. De retour lors de la DMA a été commun, la réponse est généralement "pas beaucoup" -- par exemple, dans les premières versions de Windows, de la lecture ou de l'écriture d'une disquette (qui fait d'utiliser le contrôleur de DMA) assez bien verrouillé en place le système dans la durée.
De nos jours, toutefois, la mémoire a généralement beaucoup plus de bande passante que le bus d'e/S, donc, même si un périphérique de lecture ou d'écriture de mémoire, il y a généralement une bonne quantité de bande passante pour le CPU à utiliser. En outre, un nouveau PROCESSEUR en général a un juste à grande cache, souvent, il peut exécuter une instruction, sans l'aide de la mémoire principale.
Bien le point essentiel à noter est que le CPU bus est toujours en partie utilisée par le DMA et le reste de la chaîne est libre de l'utiliser pour toute autre emploi/processus à exécuter. C'est le principal avantage de DMA sur I/O. Espère que cela répond à votre question 🙂
Être occupé ne signifie pas que vous êtes saturés et incapable de faire d'autres transferts simultanés. C'est vrai que la mémoire est peut-être un peu moins sensible que la normale, mais de Processeurs peut encore faire un travail utile, et il y a d'autres choses qu'ils peuvent faire sans entrave: croquer des données qui sont déjà dans leur cache, de recevoir les interruptions matérielles etc.. Et ce n'est pas seulement à propos de la quantité de données, mais la vitesse à laquelle il est généré: certains appareils de créer des données en temps réel difficiles et ont besoin d'être consommé rapidement sinon c'est écrasé et perdu: pour gérer cela sans DMA le logiciel peut peut-être clou à un PROCESSEUR core puis spin de l'attente et de la lecture - en évitant d'être échangé sur une autre tâche pour l'ensemble d'un planificateur de tranche de temps - même si la plupart du temps, d'autres données n'est pas encore prêt.
Cours de transfert DMA, le PROCESSEUR est inactif et n'a aucun contrôle sur le bus mémoire. CPU est mis en état de veille en utilisant l'état de haute impédance