Ökad avbrotts-DPC-tidsuppspelning & av Isoch-data till eller från en IEEE 1394-enhet

Den här artikeln hjälper dig att kringgå problemet där en betydande ökning av processoranvändningen (avbrottstid & för DPC) vid strömning av isochrona data till eller från en IEEE 1394-enhet.

Ursprunglig produktversion: Windows 7, Windows Server 2008
Ursprungligt KB-nummer: 2450963

Symptom

Du kan se en betydande ökning av processoranvändningen (avbrott och DPC-tid) när du strömmar isochrona data till eller från en IEEE 1394-enhet med Windows 7 IEEE 1394-busschauffören, jämfört med tidigare versioner av Windows IEEE 1394-busschauffören.

Orsak

Under vissa förhållanden programmerar Windows 7 IEEE 1394-busschauffören (1394ohci.sys) IEEE 1394-värdstyrenheten för att generera ett avbrott och resulterande DPC (Uppskjutet proceduranrop) för varje isochron paket som skickas eller tas emot. Under liknande förhållanden programmerar den äldre Windows IEEE 1394-busschauffören (ohci1394.sys och 1394bus.sys) IEEE 1394-värdstyrenheten för att endast generera ett avbrott och DPC som ska ske i slutet av varje isochron överföring (ram) som anges av IEEE 1394-enhetsdrivrutinen som initierar de isochrona överföringarna.

En isochron dataöverföring kräver vanligtvis flera isochrona datapaket för att överföra en meningsfull dataenhet, till exempel en videoram eller ett ljudexempel. En IEEE 1394-enhetsdrivrutin kan meddelas när en sådan meningsfull dataenhet har överförts genom att ange en återanropsrutin i Isoch Descriptor-strukturen som används för att beskriva bufferten som används för denna överföring. Den här Isoch Descriptor-strukturen skickas till Microsoft Windows IEEE 1394-busschauffören via en REQUEST_ISOCH_ATTACH_BUFFERS I/O-begäran och används för att programmera IEEE 1394-värdstyrenheten för att utföra den begärda isokroniska överföringen.

Problemet som beskrivs i den här artikeln uppstår när en IEEE 1394-enhetsdrivrutin skickar Isoch-beskrivningar som var och en beskriver ett enskilt pakets värde av data, i stället för Isoch-beskrivningar som var och en beskriver flera datapaket, till exempel en fullständig videobild eller ljudexempel. I det här scenariot kopplas flera Isoch-beskrivningar av IEEE 1394-enhetsdrivrutinen, en per paket och en återanropsrutin anges endast i den senaste Isoch-beskrivningen.

Därför anropar Windows 7 IEEE 1394-busschauffören endast den angivna återanropsrutinen när det sista datapaketet har överförts, men programmen som IEEE 1394-värdkontrollanten genererar ett avbrott när de data som beskrivs av varje Isoch Descriptor har överförts. Varje avbrott gör att avbrottshanteraren och DPC-rutinerna i Microsoft Windows 7 IEEE 1394-busschauffören anropas, vilket resulterar i en ökning av avbrotts- och DPC-tid, vilket kan observeras i verktyg för prestandaövervakning och kan påverka övergripande systemprestanda.

Lösning

Det kan vara möjligt att kringgå det här problemet genom att ändra beteendet för den berörda IEEE 1394-enhetsdrivrutinen att skicka en enda Isoch-beskrivning för varje meningsfull dataenhet, till exempel en videobildruta eller ett ljudexempel, i stället för att skicka en Isoch-beskrivning för varje datapaket. Detta skulle också minska det totala antalet Isoch-beskrivningar som krävs för att överföra samma mängd isochrona data och förväntas vanligtvis minska bearbetningskostnaderna för varje REQUEST_ISOCH_ATTACH_BUFFERS I/O-begäran.

Mer information

Mer information om hur IEEE 1394-klientdrivrutiner skickar isochrona överföringar till Microsoft IEEE 1394-busschauffören finns i följande artiklar:

Gäller för

  • Windows 7 Ultimate
  • Windows 7 Enterprise
  • Windows 7 Professional
  • Windows 7 Home Premium
  • Windows 7 Home Basic
  • Windows 7 Starter
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Datacenter