Notas sobre o processador picoJava.

Propaganda
Notas sobre o processador picoJava.
O processador picoJava é um processador destinado a executar directamente código
Java compilado, de acordo com as especificações JVM (Java Virtual Machine).
Para uma melhor compreensão deste processador, das suas características e das suas
vantagens, é conveniente uma explicação prévia sobre o funcionamento de máquinas virtuais
e de formas de execução de linguagens, interpretadas ou compiladas, neste caso particular a
linguagem Java.
Um processador só tem capacidade para entender uma linguagem, a linguagem
máquina, que difere de processador para processador. Assim, se pretendermos executar uma
sequência de instruções (programa), teremos de a fornecer ao processador (máquina) na
linguagem que este entende. No entanto, como esta linguagem é normalmente muito primária
e detalhada, optou-se por criar linguagens mais integradas e funcionais. O problema é que um
programa escrito nesta linguagem não é entendido pela máquina, pelo que é necessário um
processo intermédio para efectuar esta adaptação. Este processo pode ser efectuado de duas
formas:
• Interpretação - uma interpretação instrução a instrução, em que
cada instrução de nível superior é convertida no código máquina
respectivo que vai sendo executado à medida que o programa decorre.
• Compilação – O programa é integralmente convertido (traduzido)
para a linguagem máquina e pode então ser executado como se tivesse
sido directamente produzido para essa máquina.
Desta forma podemos considerar que a máquina base acrescida do software capaz de
efectuar a interpretação, ou compilação, de uma nova linguagem, constitui uma máquina
virtual. A máquina M0 aceita a linguagem própria L0. Se existe uma forma de adaptar uma
linguagem L1 à máquina M0, pode-se considerar que existe uma máquina M1, embora se
trate de uma máquina virtual. Se agora se considerar a existência de um software capaz de
adaptar uma nova linguagem L2 à máquina virtual M1, ou mesmo directamente à máquina
M0, pode-se igualmente conceber a existência de uma máquina virtual M2. É possível
projectar este raciocínio para n níveis, concebendo a existência de n máquina virtuais, numa
única máquina real. Uma máquina onde existem vários níveis é referida como uma máquina
multinível.
É importante referir que se um compilador consegue gerar um código optimizado para
a máquina M0, dispensando as máquinas virtuais intermédias, em especial os processos de
interpretação que estas possam efectuar durante a execução do programa, consegue-se obter
uma melhor eficácia e consequentemente melhor velocidade. Isto só é parcialmente verdade
no caso de um interpretador, pois é normal o próprio processo de interpretação degradar a
velocidade.
Devido a diversos factores tais como o aumento de complexidade das máquinas, as
necessidades de uniformização do seu funcionamento e o acesso a periféricos, as linguagens
de programação actuais disponibilizadas aos utilizadores ( C/C++, Fortran, Pascal, etc.)
encontram-se normalmente num nível bastante elevado. Considerando que um computador
moderno terá pelo menos 5 níveis bem determinados, sendo estes Máquina,
Microarquitectura, Instruction Set, Sistema operativo e programas do utilizador , os
compiladores ou interpretadores são executados neste ultimo nível, produzindo código
adaptado aos diversos níveis inferiores.
A linguagem Java é um caso especial de linguagem de programação, pois foi criada
com o objectivo de ser independente da plataforma em que é executada, além de gerar um
código pequeno.
A forma de obter esta esta portabilidade é criar em cada tipo de plataforma uma
máquina virtual capaz de reconhecer a linguagem Java. Assim surgiu a JVM (Java Virtual
Machine).
A JVM é um software necessário à maioria dos computadores para efectuar a
interpretação do código Java para a linguagem do processador (M0), ou pelo menos para
alguma das máquinas virtuais existentes no computador. A JVM pode também funcionar sob
a forma de compilador, efectuando a compilação antes de proceder à execução do programa
(JIT – Just in Time compilation).
Conforme referido anteriormente, se o código compilado for optimizado para o
processador (nível M0), obtém-se uma maior eficácia, visível normalmente em termos de
velocidade. É isto que se passa no caso do processador picoJava.
O processador picoJava for criado após a especificação da JVM com o objectivo de
optimizar a execução de código Java, acelerando-a.
Para atingir este objectivo o picoJava executa parte das instruções do código Java
directamente, optimiza a sincronização de fios de processamento e optimiza a gestão de
variáveis locais, conseguindo um menor numero de CPI (Ciclos de relógio Por Instrução). No
caso da segunda versão deste processador, o picoJava II, acrescenta ainda optimização na
execução de instruções de C/C++ e melhorias a nível de pipeline, de 4 para 6 níveis. É
possível a configuração de acordo com o objectivo seu funcionamento entre consumo,
tamanho, e velocidade.
Além das optimizações referidas, o picoJava disponibiliza instruções para uso
exclusivo do sistema operativo, para gestão do cache e acesso a registos.
No que diz respeito a hardware o picoJava apresenta ainda cache de stack, instruções e
dados. No caso do stack o cache armazena até 64 posições, enquando que no caso de
instruções e dados o cache é de 16Kbyte para cada, configuráveis em blocos de 0 a 16Kbyte.
A unidade de cálculo inteiro é de 32 bits e a de cálculo em virgula flutuante é
opcional, sendo também de 32 bits.
O Picojava disponibiliza 16 portas I/O programáveis, o que dispensa a utilização de
controladores de I/O, comuns noutras arquitecturas.
Mas as vantagens do picoJava não são só a nível do processador mas também da
arquitectura que implementa. Pode-se usar um bus PCI para acesso a periféricos ou memória,
sendo o acesso a este bus gerido pelo controlador de memória. Este controlador permite ainda
a ligação directa a uma flash PROM e uma DRAM. A PROM destina-se a armazenar o
programa a executar e a DRAM a ser usada como memória de dados. É também possivel a
ligação a um interface de I/O que disponibiliza as portas série e paralelas comuns nos PC’s.
Este processador destina-se a ser usado em dispositivos de eletrónica de consumo
(TV’s, Videos, Microondas, Agendas electrónicas, etc.) daí a importância da sua versatilidade
em termos de hardware e do seu baixo custo.
Fernando Rui Russell Pinto
Download