Exécution de DMA dans Windows 64 bits
L’ajout de la prise en charge de l’adressage 64 bits à votre pilote peut améliorer considérablement les performances globales du système. Cela est particulièrement important pour les pilotes de périphériques qui effectuent un accès direct à la mémoire (DMA). Dans Microsoft Windows 64 bits, les pilotes de périphérique qui exécutent l’Adressage DMA mais ne prennent pas en charge l’adressage 64 bits sont mis en mémoire tampon double, ce qui réduit les performances relatives.
Bien que la double mise en mémoire tampon ait généralement un impact relativement faible (points de pourcentage) sur les systèmes de 8 Go, cela est suffisant pour avoir un impact sur les tâches nécessitant beaucoup d’E/S, telles que l’activité de base de données. À mesure que la quantité de mémoire physique augmente, cet impact négatif sur les performances augmente également.
Pour prendre en charge DMA 64 bits, les pilotes doivent respecter les instructions suivantes :
Utilisez des structures PHYSICAL_ADDRESS pour les calculs d’adresses physiques.
Traitez l’adresse 64 bits entière comme une adresse physique valide. Par exemple, les pilotes ne doivent pas appeler MmGetPhysicalAddress sur une mémoire tampon verrouillée, ignorer les 32 bits élevés et passer l’adresse tronquée à un adaptateur de composant 32 bits. Cela entraîne une mémoire endommagée, une perte d’E/S et une défaillance du système.
Utilisez les routines de diffusion/collecte hautes performances (GetScatterGatherList et PutScatterGatherList) ajoutées dans Windows 2000.
Vérifiez la valeur de la variable système globale Mm64BitPhysicalAddress . S’il a la valeur TRUE, le système prend en charge l’adressage physique 64 bits.
Définissez le membre Dma64BitAddresses de la structure DEVICE_DESCRIPTION sur TRUE pour indiquer que votre pilote prend en charge les adresses DMA 64 bits.
Les routines DMA dans Windows 32 bits sont prêtes pour 64 bits. Si votre pilote de périphérique utilise correctement ces routines, votre code DMA doit fonctionner sans modification sur Windows 64 bits.