Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
30/05/94

<Power PC II >
< Emulação >


Enquanto você estiver lendo esta coluna, eu estarei desfrutando um ócio pelo qual venho ansiando há anos, gozando merecidíssimas férias. Só de uma semana, é verdade, mas férias, enfim. Porém isso não é razão para me privar do nosso agradável bate-papo semanal. Então, vamos em frente. Semana passada falávamos do Power PC, a máquina da IBM (pois a da Apple é o Power Mac) que vai usar a nova CPU RISC da Motorola. E falávamos das vantagens que os microprocessadores RISC apresentam sobre os CISC que equipam os micros atuais da linha PC. Mas, como sabemos, não há rosas sem espinhos. Nem microprocessadores que só apresentem vantagens. Portanto, deve haver alguma desvantagem.

No caso dos Power PC, ela se chama emulação. Pois, para ser considerado um micro da linha PC, o Power PC deve necessariamente rodar todos os programas e sistemas operacionais disponíveis para essa linha. Que incluem o DOS, o OS/2, Windows e os programas desenvolvidos para eles. E acontece que uma CPU RISC é um animal inteiramente diferente de uma CPU CISC. Então, como compatibilizar as coisas sem ser preciso recompilar todos os programas? Ora, o jeito é apelar para a emulação.

Mas afinal o que é essa tal de emulação? Bem, o conceito, além de não ser novo, é muito simples. E vou tentar explicar de uma forma ainda mais simplificada. Veja lá: um programa nada mais é que um conjunto de instruções que a CPU "entende", executadas uma após a outra em uma ordem determinada. Um programa compilado para ser executado em uma CPU usa instruções do conjunto de instruções dessa CPU. Se você tentar rodá-lo em máquina com outra CPU, no mínimo nada vai acontecer (no máximo, podem acontecer coisas muito estranhas), já que uma CPU não "entende" as instruções da outra. É como querer que eu discuta com um grego. Eu não vou entender nada do que ele disser: aquilo, pra mim, é grego.

Mas tem jeito: usa-se um intérprete. O grego fala grego, o intérprete traduz para o português e eu entendo. Pois emulação é isso: para executar um aplicativo desenvolvido para uma CPU em máquinas que usem CPU diferente, carrega-se um programa que age como "intérprete". Esse programa recebe uma a uma as instruções do aplicativo e as "traduz", ou seja, chama uma rotina que, usando as instruções do conjunto de instruções que a CPU da máquina "entende", executa exatamente aquilo que a instrução contida no aplicativo executaria em sua CPU nativa.

Nessa altura do jogo, você já percebeu onde o calo aperta: rapidez. Pois assim como minha conversa com o grego ficará muito mais lenta, o aplicativo vai rodar muito mais devagar que na CPU nativa. E pela mesma razão: é preciso esperar a "tradução", ou seja, que o programa emulador processe instrução por instrução e "traduza" uma a uma para algo que a outra CPU possa executar. Em geral esse processo é lentíssimo e a perda de desempenho é enorme.

O Power PC usa uma CPU da Motorola e apela para a emulação quando precisa executar um aplicativo desenvolvido para as CPU Intel. Mas emprega recursos engenhosíssimos para acelerar o processo de emulação. Tão engenhosos que, segundo a IBM, um aplicativo compilado para a CPU Intel usará apenas 40% a mais do tempo que usaria se fosse compilado para a CPU MPC. Ora, como os microprocessadores RISC operam em freqüências de operação bastante superiores que seus irmão CISC, na prática isso significa que o aplicativo rodaria no Power PC tão ou mais rapidamente que, por exemplo, em um 486 DX 33MHz. E isso apesar da emulação. Nada mal, pois não?

Não pretendo descer a detalhes técnicos maçantes para descrever os recursos usados pelo Power PC para acelerar o processo de emulação. Resumidamente, eles se baseiam em três pontos essenciais. O primeiro consiste no uso de um cache secundário de memória para a emulação, operado diretamente pela CPU. Quando uma instrução é "traduzida", o código resultante fica armazenado nesse cache pelo maior tempo possível. Assim, quando ela ocorre novamente, se o código ainda estiver no cache é utilizado imediatamente, dispensando nova "tradução". Isso acelera tremendamente a emulação, principalmente em trechos de aplicativos que se repetem, um procedimento muito usado em programação e conhecido por "loop". O segundo recurso consiste no emprego de um esquema de emulação "inteligente", capaz de antecipar a próxima instrução. Essa técnica baseia-se no fato de que, na maioria das vezes, instruções sucessivas obedecem a determinados padrões que tendem a se repetir. Enquanto a CPU se dedica a executar uma dada instrução, o sistema de emulação tenta antecipar e "traduzir" a próxima. Quando acerta - e o índice de acertos é surpreendentemente alto - ela é executada imediatamente, posto que já está "traduzida".

O terceiro ponto não depende do esquema de emulação propriamente dito, mas do fato de que a maior parte dos aplicativos modernos usa uma interface gráfica como Windows ou a Workplace Shell do OS/2. E no Power PC o suporte para estas interfaces será em modo nativo, ou seja, rodarão em código compilado para a CPU MPC. Ora, um aplicativo que roda em uma interface gráfica gasta mais de noventa porcento do tempo executando código da própria interface gráfica (ou "chamadas à API da interface", para os puristas). Portanto, quando um programa Windows ou OS/2 estiver rodando em um Power PC, mais de noventa porcento do código já estará "traduzido" para a nova CPU, pois tratam-se de funções como abrir e fechar janelas, acessar discos e outros periféricos, que são executadas pela própria interface gráfica.

Então, até agora sabemos que os Power PC usarão uma CPU RISC - e portanto serão rápidos como um raio executando aplicativos especialmente compilados para eles - e poderão ainda executar os aplicativos disponíveis para a linha PC através de um esquema de emulação inteligente, que reduzirá extraordinariamente a perda de desempenho. Tudo bem. Mas nessa altura dos acontecimentos você bem pode estar se perguntando: e daí? O que tenho eu com isso?

Se você usa um micro da linha PC, tem muito. Se duvida, espere até falarmos sobre as características dessa máquinas, sobre a estratégia que a IBM pretende adotar para fazer delas o padrão da próxima década e sobre seus sistemas operacionais.

B. Piropo