Estudo da aplicação “jogos” em sistemas embarcados Renato Fernandes Hentschke [email protected] CMP502 Sistemas Embarcados Outline 2 partes: estudo de caso e arquitetura do Playstation 2 Introdução: programação de jogos • Estudo de caso: jogo Outgun • Apresentação do jogo (porque é bom para sistemas embarcados) • Dados do programa (estáticos) • Dados de execução (dinâmicos) • Dados de profiling (% da CPU em grafico, sons, lógica, etc...) • Soluções arquiteturais usadas no playstation 2 • Arquitetura do processador principal • Dados sobre os demais processadores Introdução: Programação de Jogos Inicialização Crítico! Renderização da tela. Leitura de dados Lógica do Jogo Loop, controlado por timer. Ex: 20ms. Se loop terminar antes, libera a CPU para o SO. Saída Deadline <-> Soft Real Time Timer garante que velocidade do jogo é independente de processador. Render 2D x 3D Utilizam-se dois processos de renderização de jogos: 2D: Utilizam-se sprites (bitmaps), retângulos, círculos, etc... 3D: Utilizam objetos tridimensionais, necessitando de grande quantidade de processamento para cálculos de coordenadas, iluminação, etc... Nos computadores PC, este tipo de renderização é feita em hardware (processador dedicado). Por esta razão, mesmo os jogos mais simples estão migrando para representação tridimensional para acelerar a etapa de renderização. Jogo Outgun 1000 usuários cadastrados (em 6 meses de jogo) Partidas de pequena duração Graficos Simples (2D) Sons simples Pouco uso de CPU Pouco uso de Rede Informações Estáticas • Tamanho do código fonte (em C++): 10000 linhas • Tamanho do executável: 262 Kbytes • Allegro (biblioteca gráficos/sons): 223kBytes • Hawknl (biblioteca rede): 48KBytes • Pthreads: 110 KBytes Informações Dinâmicas – PC utilizado Executado em um PC/Pentium III 1GHz (1000 Mips) Internal Clock : 996.76 MHz System Bus : 132.90 MHz System Clock : 132.90 MHz L1 I-Cache : 16K Byte L1 D-Cache : 16K Byte L2 Cache : 256K Byte Instruct.Cache Instruct. TLB Data Cache Data TLB : : : : : : 16K byte cache size 4-way set associative 32 byte line size 4K byte pages 4-way set associative 32 entries 4M byte pages fully associative 2 entries 16K byte cache size 4-way set associative 32 byte line size 4K byte pages 4-way set associative 64 entries 4M byte pages fully associative 8 entries [L2 Information] Level 2 Cache : 256K byte cache size 8-way set associative 32 byte line size Informações Dinâmicas 30 FPS ( Frames por segundo) Uso de CPU: pico de 30%, média de 20% (dado fornecido pelo sistema operacional Win2K) Uso de memória (dados + programa) : 8Mb (fácil de reduzir pela metade, segundo o programador) Uso de banda de internet: 1-2Kbytes por segundo (é possível de reduzir usando algumas técnicas simples) Profiling: 90% do tempo é gasto em rotinas gráficas! Tempo de rotinas de som é despresível (som em formato wav, sendo que há um processador dedicado na placa de som) PlayStation 2 Figuras, slides e informações gentilmente cedidas por: PlayStation 2 Domínio de aplicação: Jogos pesados e com muitos recursos gráficos. Diferente do outgun. A solução arquitetural para este tipo de jogo é de utilizar diversos processadores separados (gráficos, lógica, sons, etc..) do jogo. No PC, por exemplo, as placas 3D permitem que jogos deste tipo tenham desempenho satisfatório. Arquitetura PlayStation 2 “Emotion Engine” – Proc. Principal “Emotion Engine” – Proc. Principal (GS) - Processador Gráfico Clock: 150MHz Embedded DRAM (cache): 4Mb Pixel fill rate 2.4GPixel/sec Processador Som -2 Cores DSP! - 2Mb Memória Conclusões -Jogos demandam muito processamento gráfico (tanto os mais simples quanto os mais sofisticados). -Jogos como Outgun possuem desempenho satisfatório em arquiteturas com um processador somente (PC). - O uso de memória do Outgun é de 8 Mb. Jogos mais complexos tipicamente consomem muito mais memória. -Processamento gráfico de jogos modernos (3D) tipicamente é realizado em processador dedicado. - Processamento de som pode ser realizado em processadores dedicados (como no PS2). No caso do Outgun, o som é armazenado em formato wav, dispensando decodificação de som (porém requer mais memória). - A arquitetura do playstation 2 divide as tarefas de processamento entre diversos processadores.