Como pensar em diferentes realidades

Disponível somente no TrabalhosFeitos
  • Páginas : 5 (1187 palavras )
  • Download(s) : 0
  • Publicado : 10 de junho de 2012
Ler documento completo
Amostra do texto
Por Bruce Dawson, Engenheiro de Software Design

Advanced Technology Group (ATG)

Publicado em: agosto de 2006

Atualizado: Junho 2010

Introdução
Durante anos, o desempenho dos processadores aumentou de forma constante, e jogos e outros programas têm colhido os benefícios deste poder cada vez maior sem ter que fazer nada de especial.

As regras mudaram. O desempenho dos núcleos de umprocessador está a aumentar muito lentamente, se em tudo. No entanto, o poder computacional disponível em um computador típico ou consola continua a crescer. A diferença é que a maior parte deste ganho de desempenho agora vem de ter múltiplos núcleos de processamento em uma única máquina, muitas vezes em um único chip. O Xbox 360 CPU possui três núcleos de processador em um único chip, e cerca de70 por cento de processadores para PC vendidos em 2006 será multi-core.

Os aumentos no poder de processamento disponível são tão dramática como no passado, mas agora os desenvolvedores tem que escrever código multithreaded, a fim de usar este poder. Programação multi-threaded traz novo design e os desafios de programação. Este artigo dá alguns conselhos sobre como começar com programaçãomultithreaded.

A Importância de um bom design
Concepção do programa Bom multithreaded é fundamental, mas pode ser muito difícil. Se você por acaso passar os seus sistemas de jogos importantes em tópicos diferentes, você provavelmente vai descobrir que cada segmento passa a maior parte do seu tempo de espera nos outros segmentos. Este tipo de projeto leva a uma maior complexidade e esforço dedepuração significativa, com praticamente nenhum ganho de desempenho.

Toda vez que os segmentos têm de sincronizar ou compartilhar dados há o potencial para a corrupção de dados, sobrecarga de sincronização, deadlocks, e complexidade. Portanto, seu projeto multithreaded precisa documentar claramente cada sincronização e ponto de comunicação, e deverá minimizar tais pontos, tanto quanto possível. Ondetópicos precisam se comunicar, o esforço de codificação aumentará, o que pode diminuir a produtividade, se ele afeta muito código.

O objetivo design mais simples para multithreading é para quebrar o código em grandes peças independentes. Se você, em seguida, restringir essas peças para comunicar apenas algumas vezes por frame, você vai ver aceleração significativa de multithreading, semcomplexidade exagerada.

Tarefas típicas de rosca
Alguns tipos de tarefas provaram passíveis de serem colocados em segmentos separados. A lista a seguir não pretende ser exaustiva, mas deve dar algumas idéias.

Rendering
Rendering - que podem incluir andar do grafo de cena ou, possivelmente, apenas chamar funções de D3D - freqüentemente são responsáveis ​​por 50 por cento ou mais do tempo da CPU.Portanto, se movendo de renderização para outro segmento pode ter benefícios significativos. O segmento de atualização pode preencher algum tipo de buffer de renderização descrição, que o segmento de processamento pode então processar.

O segmento de atualização do jogo é sempre um quadro à frente do thread de processamento, o que significa que ele tem dois quadros antes de as ações do usuárioaparecem na tela. Embora este aumento da latência pode ser um problema, a taxa de frame aumentou de fraccionamento a carga de trabalho geralmente mantém a latência total aceitável.

Na maioria dos casos toda a renderização ainda é feito em um único segmento, mas é um segmento diferente da atualização do jogo.

A bandeira D3DCREATE_MULTITHREADED às vezes é usado para permitir a prestação em umsegmento e criação de recursos em outros segmentos, este parâmetro é ignorado no Xbox 360, e você deve evitar usá-lo em Windows. No Windows, especificando este sinalizador força D3D de gastar uma quantidade significativa de tempo sobre a sincronização, assim, retardar o thread de processamento.

Descompactação do arquivo
Os tempos de carregamento são sempre muito tempo, e fluxo de dados na...
tracking img