Lire en anglais

Partager via


Augmentation de l’interruption et de la diffusion en continu de données Isoch en continu vers ou depuis un appareil IEEE 1394

Cet article vous aide à contourner le problème où une augmentation significative de l’utilisation du processeur (interruption et temps DPC) lors de la diffusion en continu de données isochronous vers ou à partir d’un appareil IEEE 1394.

Version du produit d’origine : Windows 7, Windows Server 2008
Numéro de base de connaissances d’origine : 2450963

Symptômes

Vous pouvez observer une augmentation significative de l’utilisation du processeur (interruption et temps DPC) lors de la diffusion en continu de données isochronous vers ou à partir d’un appareil IEEE 1394 avec le pilote de bus Windows 7 IEEE 1394, par rapport aux versions précédentes du pilote de bus Windows IEEE 1394.

Cause

Dans certaines conditions, le pilote de bus Windows 7 IEEE 1394 (1394ohci.sys) programme le contrôleur hôte IEEE 1394 pour générer une interruption et un DPC résultant (appel de procédure différée) pour chaque paquet Isochronous envoyé ou reçu. Dans des conditions similaires, le pilote de bus Windows IEEE 1394 hérité (ohci1394.sys et 1394bus.sys) programme le contrôleur hôte IEEE 1394 pour générer uniquement une interruption et DPC à se produire à la fin de chaque transfert Isochronous (frame) tel que désigné par le pilote de périphérique IEEE 1394 qui lance les transferts Isochronous.

Un transfert de données isochronous nécessite généralement plusieurs paquets de données Isochronous pour transférer une unité significative de données, comme une image vidéo ou un échantillon audio. Un pilote de périphérique IEEE 1394 peut être averti lorsqu’une unité significative de données a été transférée en spécifiant une routine de rappel dans la structure de descripteur Isoch utilisée pour décrire la mémoire tampon utilisée pour ce transfert. Cette structure de descripteur Isoch est soumise au pilote de bus Microsoft Windows IEEE 1394 via une requête d’E REQUEST_ISOCH_ATTACH_BUFFERS /S et est utilisée pour programmer le contrôleur hôte IEEE 1394 pour effectuer le transfert Isochronous demandé.

Le problème décrit dans cet article se produit lorsqu’un pilote de périphérique IEEE 1394 envoie des descripteurs Isoch qui décrivent chacune la valeur d’un paquet unique de données, au lieu des descripteurs Isoch qui décrivent chacun plusieurs paquets de données, tels qu’une image vidéo complète ou un échantillon audio. Dans ce scénario, plusieurs descripteurs Isoch sont attachés par le pilote de périphérique IEEE 1394, un par paquet et une routine de rappel est spécifiée uniquement dans le dernier descripteur Isoch.

Par conséquent, le pilote de bus Windows 7 IEEE 1394 appelle uniquement la routine de rappel spécifiée lorsque le dernier paquet de données a été transféré, mais les programmes du contrôleur hôte IEEE 1394 pour générer une interruption une fois que les données décrites par chaque descripteur Isoch ont été transférées. Chaque interruption entraîne l’appel du gestionnaire d’interruptions et des routines DPC dans le pilote de bus Microsoft Windows 7 IEEE 1394, ce qui entraîne une augmentation du temps d’interruption et de DPC, qui peut être observé dans les outils de surveillance des performances et peut avoir un impact sur les performances globales du système.

Solution de contournement

Il peut être possible de contourner ce problème en modifiant le comportement du pilote de périphérique IEEE 1394 affecté pour envoyer un descripteur Isoch unique pour chaque unité significative de données, telle qu’une image vidéo ou un échantillon audio, au lieu de soumettre un descripteur Isoch pour chaque paquet de données. Cela réduirait également le nombre total de descripteurs Isoch requis pour transférer la même quantité de données Isochronous, et devrait généralement réduire la surcharge de traitement associée à chaque REQUEST_ISOCH_ATTACH_BUFFERS demande d’E/S.

Plus d’informations

Pour plus d’informations sur la façon dont les pilotes clients IEEE 1394 envoient des transferts Isochronous au pilote de bus Microsoft IEEE 1394, consultez les articles suivants :

S’applique à

  • Windows 7 Édition Intégrale
  • Windows 7 Entreprise
  • Windows 7 Professionnel
  • Windows 7 Édition Familiale Premium
  • Windows 7 Édition Familiale Basique
  • Windows 7 Édition Starter
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Entreprise
  • Windows Server 2008 R2 Datacenter