Interrupção aumentada & dados isoch de fluxo de tempo DPC para ou de um dispositivo IEEE 1394

Este artigo ajuda você a contornar o problema em que um aumento significativo na utilização do processador (interromper & tempo de DPC) ao transmitir dados isocronos de ou para um dispositivo IEEE 1394.

Versão original do produto: Windows 7, Windows Server 2008
Número de KB original: 2450963

Sintomas

Você pode observar um aumento significativo na utilização do processador (interrupção e tempo de DPC) ao transmitir dados isocronos de ou para um dispositivo IEEE 1394 com o driver de ônibus IEEE 1394 do Windows 7, em comparação com as versões anteriores do driver de ônibus do Windows IEEE 1394.

Motivo

Em determinadas condições, o driver de ônibus IEEE 1394 do Windows 7 (1394ohci.sys) programa o controlador host IEEE 1394 para gerar uma DPC (Chamada de Procedimento Adiada) para cada pacote isocrono enviado ou recebido. Em condições semelhantes, o driver de ônibus herdado do Windows IEEE 1394 (ohci1394.sys e 1394bus.sys) programa o controlador host IEEE 1394 para gerar apenas uma interrupção e o DPC a ocorrer no final de cada transferência isocrona (quadro) conforme designado pelo driver de dispositivo IEEE 1394 que inicia as transferências isocronas.

Uma transferência de dados isocrona normalmente requer vários pacotes de dados isocronos para transferir uma unidade significativa de dados, como um quadro de vídeo ou um exemplo de áudio. Um driver de dispositivo IEEE 1394 pode ser notificado quando uma unidade de dados tão significativa foi transferida especificando uma rotina de retorno de chamada na estrutura do Descritor isoch usada para descrever o buffer usado para essa transferência. Essa estrutura do Descritor isoch é enviada ao driver de ônibus do Microsoft Windows IEEE 1394 por meio de uma REQUEST_ISOCH_ATTACH_BUFFERS solicitação de E/S e é usada para programar o controlador host IEEE 1394 para executar a transferência isocrona solicitada.

O problema descrito neste artigo ocorre quando um driver de dispositivo IEEE 1394 envia descritores Isoch que descrevem cada um dos dados de um único pacote, em vez de Descritores isoch que descrevem vários pacotes de dados, como um quadro de vídeo completo ou exemplo de áudio. Nesse cenário, vários Descritores isoch são anexados pelo driver de dispositivo IEEE 1394, um por pacote, e uma rotina de retorno de chamada só é especificada no último Descritor isoch.

Como resultado, o driver de ônibus IEEE 1394 do Windows 7 invoca apenas a rotina de retorno de chamada especificada quando o último pacote de dados foi transferido, mas os programas do controlador host IEEE 1394 geram uma interrupção depois que os dados descritos por cada Descritor isoch foram transferidos. Cada interrupção faz com que o manipulador de interrupção e as rotinas de DPC no driver de ônibus do Microsoft Windows 7 IEEE 1394 sejam invocados, resultando em um aumento no tempo de Interrupção e DPC, que pode ser observado em ferramentas de monitoramento de desempenho e pode ter um impacto no desempenho geral do sistema.

Solução alternativa

Talvez seja possível contornar esse problema alterando o comportamento do driver de dispositivo IEEE 1394 afetado para enviar um único Descritor isoch para cada unidade significativa de dados, como um quadro de vídeo ou um exemplo de áudio, em vez de enviar um Descritor isoch para cada pacote de dados. Isso também reduziria o número total de descritores isoch necessários para transferir a mesma quantidade de dados isocronos, e geralmente seria esperado reduzir a sobrecarga de processamento associada a cada REQUEST_ISOCH_ATTACH_BUFFERS solicitação de E/S.

Mais informações

Para obter mais informações sobre como os drivers de cliente do IEEE 1394 enviam transferências isocronas para o motorista de ônibus do Microsoft IEEE 1394, confira os seguintes artigos:

Aplicável a

  • 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