Memory mapped I/O permet à l'ordinateur de contrôle du matériel par la lecture et l'écriture spécifique de la mémoire d'adresses. Généralement, utilisé à faible bande passante des opérations telles que la modification des bits de contrôle.
DMA permet de matériel pour directement lire et écrire la mémoire sans impliquant le CPU. Généralement utilisé pour les haut-largeur de bande des opérations telles que l'e/S de disque ou l'entrée vidéo de la caméra.
De sorte qu'ils sont fondamentalement la même chose, mais dans des directions opposées?
Pas exactement. Le DMA est lorsque deux périphériques qui ne sont pas l'utilisation du PROCESSEUR sur le bus mémoire de communiquer avec un périphérique étant généralement la mémoire principale, et le processus orchestré par le CPU). Mappés en mémoire IO est le CPU parler de périphérique sur le bus mémoire qui n'est pas la mémoire principale.
pourquoi est-il nécessaire pour carte mémoire tampon dma même si le dma moteur est à l'appareil ?
Puisque d'autres l'ont déjà répondu à la question, je vais juste ajouter un petit peu d'histoire.
De retour dans les vieux jours, sur x86 (PC) de matériel, il n'y avait qu'I/O de l'espace et de l'espace mémoire. Ces deux espaces d'adressage, accessible avec différentes protocole du bus et les différentes instructions du PROCESSEUR, mais capable de parler sur le même plug-in de la fente de carte.
La plupart des appareils utilisés I/O de l'espace pour le contrôle de l'interface et le volume de transfert de données de l'interface. La manière la plus simple d'accéder à des données était d'exécuter beaucoup d'instructions du PROCESSEUR pour transférer des données, un mot à la fois à partir d'une adresse d'e/S à une adresse de mémoire (parfois appelé "bit-banging.")
Afin de déplacer les données à partir de périphériques de mémoire hôte de manière autonome, il n'y a pas de support dans le bus ISA protocole pour les appareils à initier des transferts. Une solution de compromis a été inventé: le contrôleur de DMA. C'était un morceau de matériel qui s'assit par le CPU, et a initié les transferts de déplacer les données d'un périphérique d'e/S adresse à la mémoire, ou vice versa. Parce que l'adresse d'e/S est le même, le contrôleur de DMA est en train de faire exactement les mêmes opérations qu'un CPU serait, mais un peu plus efficacement et en permettant une certaine liberté pour continuer à fonctionner en arrière-plan (mais peut-être pas pour longtemps car il ne peut pas parler de la mémoire).
Avance rapide pour les jours de PCI, et les protocoles de bus a beaucoup plus intelligent: tout appareil peut effectuer un transfert. Il est donc possible, par exemple, une carte contrôleur RAID pour déplacer toutes les données qu'il aime ou de l'hôte à tout moment qu'il aime. Ceci est appelé le "maître du bus" mode, mais pour aucune raison en particulier, les gens continuent à se référer à cette mode de "DMA", même si l'ancien contrôleur de DMA est révolue depuis longtemps. Contrairement à l'ancien transferts DMA, il n'y a souvent aucune adresse d'e/S, et le bus master mode est bien souvent la seule interface présente sur l'appareil, pas de CPU "bit-banging" mode.
Dans le Noyau Linux DMA est mentionné dans plus de 5000 C fichiers, ce qui pourrait être une raison pourquoi tout le monde parle de DMA.
Mappés en mémoire IO signifie que l'appareil enregistre sont mappés dans la mémoire de la machine de l'espace - lorsque ces zones de mémoire sont lues ou écrites par le CPU, c'est en lecture ou écriture à l'appareil, plutôt que de la mémoire réelle. Pour transférer des données depuis l'appareil vers un tampon de mémoire, le CPU doit lire les données à partir de la mémoire-périphérique mappé registres et l'écrire dans la mémoire tampon (et l'inverse pour le transfert de données vers l'appareil).
Avec un transfert DMA, l'appareil est capable de transférer directement les données à partir d'une véritable mémoire tampon lui-même. Le PROCESSEUR indique à l'appareil à l'emplacement de la mémoire tampon, et puis peut effectuer d'autres tâches pendant que l'appareil est directement accès à la mémoire.
Accès Direct à la Mémoire (DMA) est une technique permettant de transférer les données d'e/S de la mémoire et de la mémoire d'e/S sans l'intervention de la CPU. À cette fin, une puce spéciale, nommée contrôleur de DMA, est utilisé pour contrôler l'ensemble des activités et de la synchronisation de données. Comme résultat, le comparer à d'autres techniques de transfert de données, le DMA est beaucoup plus rapide.
D'autre part, la mémoire Virtuelle agit comme un cache entre la mémoire principale et la mémoire secondaire. De l'extraction des données à l'avance à partir de la mémoire secondaire (disque dur) dans la mémoire principale, de sorte que les données sont déjà disponibles dans la mémoire principale en cas de besoin. Il nous permet d'exécuter plusieurs applications sur le système que nous avons assez de mémoire physique à l'appui.
Memory mapped I/O permet à l'ordinateur de contrôle du matériel par la lecture et l'écriture spécifique de la mémoire d'adresses. Généralement, utilisé à faible bande passante des opérations telles que la modification des bits de contrôle.
DMA permet de matériel pour directement lire et écrire la mémoire sans impliquant le CPU. Généralement utilisé pour les haut-largeur de bande des opérations telles que l'e/S de disque ou l'entrée vidéo de la caméra.
Source: https://www.nersc.gov/users/computational-systems/cori/application-porting-and-performance/measuring-and-understanding-memory-bandwidth
Puisque d'autres l'ont déjà répondu à la question, je vais juste ajouter un petit peu d'histoire.
De retour dans les vieux jours, sur x86 (PC) de matériel, il n'y avait qu'I/O de l'espace et de l'espace mémoire. Ces deux espaces d'adressage, accessible avec différentes protocole du bus et les différentes instructions du PROCESSEUR, mais capable de parler sur le même plug-in de la fente de carte.
La plupart des appareils utilisés I/O de l'espace pour le contrôle de l'interface et le volume de transfert de données de l'interface. La manière la plus simple d'accéder à des données était d'exécuter beaucoup d'instructions du PROCESSEUR pour transférer des données, un mot à la fois à partir d'une adresse d'e/S à une adresse de mémoire (parfois appelé "bit-banging.")
Afin de déplacer les données à partir de périphériques de mémoire hôte de manière autonome, il n'y a pas de support dans le bus ISA protocole pour les appareils à initier des transferts. Une solution de compromis a été inventé: le contrôleur de DMA. C'était un morceau de matériel qui s'assit par le CPU, et a initié les transferts de déplacer les données d'un périphérique d'e/S adresse à la mémoire, ou vice versa. Parce que l'adresse d'e/S est le même, le contrôleur de DMA est en train de faire exactement les mêmes opérations qu'un CPU serait, mais un peu plus efficacement et en permettant une certaine liberté pour continuer à fonctionner en arrière-plan (mais peut-être pas pour longtemps car il ne peut pas parler de la mémoire).
Avance rapide pour les jours de PCI, et les protocoles de bus a beaucoup plus intelligent: tout appareil peut effectuer un transfert. Il est donc possible, par exemple, une carte contrôleur RAID pour déplacer toutes les données qu'il aime ou de l'hôte à tout moment qu'il aime. Ceci est appelé le "maître du bus" mode, mais pour aucune raison en particulier, les gens continuent à se référer à cette mode de "DMA", même si l'ancien contrôleur de DMA est révolue depuis longtemps. Contrairement à l'ancien transferts DMA, il n'y a souvent aucune adresse d'e/S, et le bus master mode est bien souvent la seule interface présente sur l'appareil, pas de CPU "bit-banging" mode.
DMA
est mentionné dans plus de 5000 C fichiers, ce qui pourrait être une raison pourquoi tout le monde parle de DMA.Mappés en mémoire IO signifie que l'appareil enregistre sont mappés dans la mémoire de la machine de l'espace - lorsque ces zones de mémoire sont lues ou écrites par le CPU, c'est en lecture ou écriture à l'appareil, plutôt que de la mémoire réelle. Pour transférer des données depuis l'appareil vers un tampon de mémoire, le CPU doit lire les données à partir de la mémoire-périphérique mappé registres et l'écrire dans la mémoire tampon (et l'inverse pour le transfert de données vers l'appareil).
Avec un transfert DMA, l'appareil est capable de transférer directement les données à partir d'une véritable mémoire tampon lui-même. Le PROCESSEUR indique à l'appareil à l'emplacement de la mémoire tampon, et puis peut effectuer d'autres tâches pendant que l'appareil est directement accès à la mémoire.
Accès Direct à la Mémoire (DMA) est une technique permettant de transférer les données d'e/S de la mémoire et de la mémoire d'e/S sans l'intervention de la CPU. À cette fin, une puce spéciale, nommée contrôleur de DMA, est utilisé pour contrôler l'ensemble des activités et de la synchronisation de données. Comme résultat, le comparer à d'autres techniques de transfert de données, le DMA est beaucoup plus rapide.
D'autre part, la mémoire Virtuelle agit comme un cache entre la mémoire principale et la mémoire secondaire. De l'extraction des données à l'avance à partir de la mémoire secondaire (disque dur) dans la mémoire principale, de sorte que les données sont déjà disponibles dans la mémoire principale en cas de besoin. Il nous permet d'exécuter plusieurs applications sur le système que nous avons assez de mémoire physique à l'appui.