Comment fonctionne le DMA avec les périphériques PCI Express?
Supposons qu'un CPU veut faire un DMA de transfert à partir d'une carte PCI Express de l'appareil. Communication pour les périphériques PCI Express est fourni par la couche de transaction paquets (TLP). Théoriquement, le maximum de la taille de la charge utile est de 1024 doubleword pour TLP. Alors, comment un contrôleur de DMA loi lorsqu'un PROCESSEUR donne un DMA commande de lecture de la carte PCI Express appareil en taille de 4 mo?
source d'informationauteur spartacus | 2014-12-14
Vous devez vous connecter pour publier un commentaire.
Dans le PCIe énumération phase, le maximum permis par la taille de la charge utile est déterminée (elle peut être inférieure de l'appareil max taille de la charge utile: par exemple, un intermédiaire PCIe commutateur inférieur à max. taille de la charge utile).
La plupart des périphériques PCIe sont DMA maîtres, de sorte que le pilote de transferts de la commande de l'appareil. L'appareil envoie plusieurs écriture de paquets à transmettre 4 MiB en xx max taille TLP morceaux.
Edit 1 en réponse au commentaire 1:
Un PCI bus n'a pas de "Contrôleur de DMA" sous la forme d'une puce ou d'un sous-circuit dans le chipset. Chaque périphérique sur le bus peut devenir un maître du bus. La mémoire principale est toujours un esclave.
Supposons que vous avez créer votre propre périphérique PCIe de la carte, qui peut agir comme un PCI maître et votre programme (en cours d'exécution sur le PROCESSEUR) veut envoyer des données à partir de la carte mémoire principale (4 mo).
Le pilote de l'appareil sait le mappage de la mémoire pour la mémoire de la région à partir du système d'exploitation (quelques mots clés: memory mapped I/O, l'énumération de bus PCI, PCI BARs, ).
Le pilote de transferts de la commande (à écrire), adresse source, de la destination-adresse et la longueur de l'appareil. Cela peut être fait par l'envoi d'octets d'une adresse spéciale à l'intérieur d'un pré-définis BARRE ou par écrit dans le PCI config de l'espace. Le DMA maître sur les cartes de contrôles de ces régions spécial pour les nouvelles tâches (scatter-gather listes). Si oui, ces tâches soient mis en file d'attente.
Maintenant le DMA maître sait où envoyer, comment beaucoup de données. Il va lire les données de la mémoire locale et l'envelopper dans de 512 octets Pat de max taille de la charge utile (la charge utile maximale taille sur le chemin de périphérique <---> la mémoire principale est connu depuis le recensement) et de l'envoyer à l'adresse de destination. Le PCI de l'adresse de routage basé sur des mécanismes directs de ces Pat à la mémoire principale.