Você está na página 1de 9

Processadores JAVA

Filipe Veloza
Lisboa, Portugal fmvel@mega.ist.utl.pt

Gustavo Amaro
Lisboa, Portugal gustavo.amaro@mega.ist.utl.pt

Lus Alves
Lisboa, Portugal lmla@mega.ist.utl.pt

ABSTRACT Este artigo d uma viso sobre os microprocessadores Java, quais as suas necessidades de implementao sendo realizados 4 estudos de diferentes implementaes. Tendo em considerao as diferentes solues abordadas neste artigo, poderemos encontrar futuramente estas implementaes em sistemas to variados como processadores que incluem o microprocessador como coprocessador ou at mesmo telemveis por forma a correrem nativamente aplicaes Java com baixos consumos. Palavras Chave Bytecodes, processador Java, sistemas embarcados, picoJava, Jazelle, Ajile-80, lavaCORE 1 - INTRODUO Com a crescente procura de pequenos dispositivos electrnicos ( tais como telemveis de ltima gerao, PDAs, etc. ) e, tendo em conta a sua rpida evoluo tecnolgica torna-se necessrio encontrar solues mais eficientes e flexveis, de forma a manter os produtos competitivos num mercado cada vez mais exigente. A linguagem de programao JAVA, apresentando aspectos de portabilidade sobre a plataforma onde se executa, complementada por uma gesto transparente de memria e caractersticas de processos e sincronizao, torna-se uma boa opo face a este conjunto de requisitos. A mquina virtual java (JVM), o alicerce da plataforma Java, sendo responsvel pela possibilidade de poder executar os seus bytecodes, em qualquer plataforma de hardware e independentemente do sistema operativo. Para tal implementa uma mquina de computao abstracta que, tal como uma mquina real, contm um conjunto de instrues e manipula vrias reas de memria, quando se encontra a executar-se[16]. Contudo, os grandes requisitos de hardware a nvel de processador, memria e energia, necessrios para executar a JVM de forma sustentada e coerente, tornavam pouco vivel a adopo desta soluo tcnica. Como forma de ultrapassar este problema, a Sun Microsystems, Inc, desenvolveu verses mais reduzidas da sua mquina virtual, tendo lanando primeiramente o K Virtual Machine em Agosto de 1999, cujo objectivo era a demonstrao bsica das funcionalidades Java, permitindo que este pudesse ser executado em hardware de baixos requisitos, tais como os processadores de 16 bits, ou superiores, com tempos de relgio to baixos como 25 Mhz e memria na ordem dos 128K [9].
Fig. 1 Mquinas Virtuais Java

O mercado de aparelhos mveis foi crescendo bem como os seus requisitos. Como resultado desta necessidade, em 2002 foi lanado a especificao Connected Limited Device Configuration HotSpot (CLDC HotSpot) sendo o seu objectivo a implementao de uma nova mquina virtual especifica para sistemas embarcados de baixo consumo. Para que tal fosse atingido, procurou-se concretizar: - Uma performance to elevada quanto a tecnologia disponvel o permitisse. - Diminuir o tempo de arranque das aplicaes. - Diminuir o consumo bsico de memria por parte da mquina virtual. - Estender o tempo de vida da bateria [7]. Para alm do amadurecimento da prpria mquina virtual, tem-se verificado ao mesmo tempo, um aumento de qualidade nas solues desenvolvidas. De forma a aumentar o seu desempenho, comearam a ser criados microprocessadores que correm os Bytecodes da mquina virtual Java, e que apresentam como caractersticas, reduzidas dimenses e baixos consumos, resultante da falta de necessidade de recorrer aos interpretadores da linguagem para executar os programas, que tinha como resultado o aumento de carga dos processadores[7]. Como exemplo destes processadores, podemos referir o PicoJava, Jazelle, aJile-80 e lavaCORE, tendo cada um deles, a sua soluo para executar os Bytecodes da mquina virtual Java. Este pequeno texto, procurar abordar no captulo 2 e de uma maneira sinttica, os requisitos necessrios para a construo de processadores que interpretem os Bytecodes Java nativamente. No captulo 3 abordaremos algumas das implementaes actualmente existentes.

Pgina 1/9

2 ESPECIFICAO A especificao CLDC HotSpot serve de base a este captulo, dado ser a ltima verso da mquina virtual Java para sistemas embarcados e ter sido especialmente optimizada para baixos requisitos de hardware, possibilitando assim o seu uso em pequenos aparelhos electrnicos. 2.1 CPU Para evitar a sobrecarga do processador resultante da transformao dos Bytecodes para outra linguagem de processador nativa, tornou-se necessrio o desenvolvimento de processadores capazes de interpretar e executar este conjunto de Bytecodes como instrues nativas. Esta soluo permitia diminuir o consumo de energia, factor essencial para os pequenos aparelhos electrnicos[10]. A JVM definida na especificao HotSpot procura tirar proveito dos recursos actualmente existentes, como por exemplo o baixo custo de memria, permitindo o uso de grandes quantidades nos aparelhos[8], por esta razo a mquina virtual de 32 bits, no entanto a sua implementao poder ser feita em processadores de 16/32 bits, aumentando a sua rea de possvel utilizao ao mesmo tempo que diminui os seus requisitos[7]. Uma pesquisa realizada pela Sun Microsystems, Inc (origem: inqurito de clientes, 2001), apontava j nessa altura para a probabilidade de os telemveis da prxima gerao virem a possuir os seguintes requisitos[7]: Tipo de CPU: Velocidade de CPU: Memria On-Board: RAM: ROM/Flash: RAM para Java Stack: Principalmente ARM 30 400 MHz 128 384 Kb 1 4 Mb 8/24 Mb Principalmente abaixo de 1 Mb
Tabela 1

efeito esses mesmos registos. Essas solues no sero to eficientes[3]. 2.3 Gesto de Memria O facto de se tratar de uma mquina virtual de 32 bits, permite um grande espao de endereamento, perfeitamente capaz de satisfazer os requisitos de aparelhos mveis de gama alta. Uma caracterstica muito reconhecida desta mquina virtual o colector de lixo (garbage collector), sendo este composto por trs factores: o ponteiro para os objectos, a preciso e o algoritmo de identificao. A preciso na identificao de lixo na memria, um factor que acrescenta mais -valia ao bom desempenho e estabilidade da mquina virtual, aumentando igualmente os seus nveis de segurana[8]. 2.4 Estrutura de Execuo A primeira questo a tomar em considerao que o conjunto de instrues no de tamanho fixo, chegando mesmo a no ter limite. Torna-se necessrio ter este factor em considerao quando se desenvolve o processador, j que, para instrues mais extensas este pode bloquear, aguardando at recepo completa destas[4]. Uma questo relevante na implementao do processador da mquina virtual, definir quais as instrues que devero ser processadas nativamente e quais as que sero processadas atravs de microcdigo ( hooks), existente no processador, por serem demasiado complexas, implicando dificuldades acrescidas no desenvolvimento do hardware. Um bom exemplo o processamento do colector de lixo e o tratamento dos diferentes processos. 3 - IMPLEMENTAO 3.1 PicoJava II CORE 3.1.1 Introduo O microprocessador PicoJava II define o ncleo de um processador desenhado para executar Java Bytecodes no modo nativo, tal como descrito nas especificaes da Maquina Virtual Java. 3.1.2 Arquitectura A arquitectura do microprocessador PicoJava II tem as seguintes caractersticas: Execuo nativa de Java Bytecodes; Instruction Set estendido (115 Bytecodes extra permitem diagnostico de hardware, leituras e escritas de registos, loads e stores arbitrrios, suporte a software de sistema e suporte a outras linguagens de programao tais como C ou C++); Pipeline RISC de 6 andares com forward instruction folding, um processo no qual uma instruo carregada e executada num nico ciclo de relgio; 120k portas. composta pelas seguintes unidades bsicas:

Uma questo no que se refere mquina virtual Java, que esta no gerida por interrupes, pois estas levariam a um conflito entre os diferentes processos e sincronizaes. Assim sendo, pode considerar-se uma interrupo como um processo de alta prioridade[3]. 2.2 Hierarquizao de Memria (Stack) A mquina virtual Java , na sua gnese, uma mquina que usa a memria de modo hierrquico para as suas instrues, sendo o Stack o ponto fulcral no desempenho do sistema embarcado, apresentando assim um modelo limpo de computao e eliminando restries na sua implementao ao nvel de hardware. Uma boa implementao de hierarquizao da memria ir garantir uma rpida execuo dos programas Java, garantindo assim um baixo consumo de energia. Podero, no entanto, existir implementaes de processadores que usem registos, fazendo uma implementao de memria hierrquica usando para o

Pgina 2/10

Unidade de Inteiros de 32 bits o Executa todas as instrues que no sejam em virgula flutuante; o Implementa tambm um conjunto extra de Bytecodes. Unidade de Virgula Flutuante de 32 bits (opcional) o Executa todas as instrues matemticas (instrues em virgula flutuante); o Suporte para instrues de dupla preciso, mas estas requerem mais 2 a 4 ciclos de relgio que as instrues de preciso simples. Unidade de Cache de Dados o Cache de Dados de tamanho configurvel (0, 1, 2, 4, 8 ou 16) Kbytes. uma cache associativa de 2 vias suportando write-back e writeallocate e com um bloco de 16 bytes. Tem um ciclo de relgio de latncia; o Faz os pedidos arbitrariamente ao drible manager ou ao pipeline, tendo este priorid ade. Unidade de Cache de Instrues o Cache de Instrues de tamanho configurvel (0, 1, 2, 4, 8 ou 16) Kbytes. uma cache de mapeamento directo com um bloco de 16 bytes. Tem um ciclo de relgio de latncia; o Procura as instrues na cache de instrues, fornecendo-as ao bloco descodificador. localizado na unidade de inteiros. Unidade de Gesto de Stack o Consiste num Stack -cache com trs portas de a leitura e duas de escrita, numa unidade de controlo de Stack e num gestor de dribles (dribla dados entre o Stack e a memria sempre que ocorra um overflow ou underflow na Stack cache). A Stack cache tem 64 entradas; oFornece os sinais de controlo necessrios para que a unidade de inteiros possa receber os operandos. Unidade de BusInterface o a interface entre o microprocessador PicoJava, a memria externa e outros dispositivos de I/O. Unidade de Gesto de Energia, Reset do Sistema, Scan e Teste oProvidencia gesto de energia, reset do sistema, scan e teste. 1.Hierarquizao de memria (Stack ) Stack -Cache com 64 entradas, permitindo eliminar as ineficincias associadas ao processamento de instrues baseadas em Stack; Uma vez que a stackcache apenas pode crescer ou diminuir, o problema surge quando esta cresce demais ou diminui abruptamente. Assim, um mecanismo de background copia as entradas desactualizadas da stack-cache para a cache de dados permitindo assim que a stack-cache cresa indefinidamente sem que a unidade de inteiros

se preocupe em guardar as entradas dirty, ou que diminua abruptamente sendo copiadas entradas da cache de dados para a stack-cache dando a iluso de haver sempre dados validos na nesta ultima. Operaes de acesso ao topo do Stack (LIFO) so aceleradas atravs do processo forward instruction folding descrito acima. 2.Estrutura de execuo (fetch + set) Utilizao do processo forward instruction folding.

O microprocessador PicoJava II pode ser optimizado tendo em conta constrangimentos a nvel de consumo, velocidade e espao fsico ocupado, tornando -se assim bastante verstil e adaptvel a diferentes necessidades. 3.1.3 Instruction Set O microprocessador PicoJava II acelera o ambiente da maquina virtual Java, uma vez que executa directamente o instruction set desta, sem ter a necessidade de recorrer a um interpretador, nem a um compilador JIT (Just In Time) eliminando assim o overhead associado utilizao destes. Suporta tambm sincronizao de threads, vrios mtodos de garbage collection, invocao de mtodos e esconde os loads das variveis locais, seguindo assim as normas da programao por objectos. Para alm disto, ainda implementa um conjunto extra de Bytecodes, os quais apenas podem ser executados pelo sistema operativo e no esto acessveis ao utilizador, que permitem load/store arbitrrio, gesto de cache e acesso a registos internos O microprocessador PicoJava II executa a maior parte das instrues em hardware. As instrues complexas esto microcodificadas, sendo as mais complexas apanhadas e executadas por software. 3.1.4 Pipeline do picoJava

Figura 2 Pipeline do picoJava

constitudo por 6 andares: 1. No primeiro andar feito o fetch/procura das instrues na cache de instrues sendo estas retornadas ao bloco de descodificao localizado na unidade de inteiros. utilizado um buffer de instrues para guardar as mesmas, at que estas sejam consumidas pela unidade de inteiros. No segundo andar feito o folding de instrues na Unidade de Folding de Instrues, sendo estas agrupadas e pr-codificadas. Estas instrues so codificadas em microcdigo sendo executadas no andar seguinte

2.

Pgina 3/10

3.

No terceiro andar, so lidos os registos (operandos) da cache de pilha e so determinadas as condies de uso de instrues de leitura, condies de bypass e condies de falha na cache de pilha. No quarto andar, utilizada a unidade de aritmtica e lgica para executar as instrues lgicas, aritmticas, para calculo dos endereos de leitura e de armazenamento da Unidade de Cache de Dados. As instrues em virgula flutuante so enviadas para a Unidade de Virgula Flutuante No quinto andar so acedidos os dados da cache de dados. No sexto andar os resultados so escritos na cache de pilha

4.

5. 6.

Fig.4 Exemplo de um processador baseado no microprocessador PicoJava II

3.1.5 Anlise Comparativa Cdigo das aplicaes 3xs menor 5 vezes mais rpido 20 vezes mais rpidos que os interpretadores Java que correm nos CPUs standarts 3.2 Jazelle 3.2.1 A empresa ARM uma empresa fornecedora de solues para microprocessadores embarcados RISC de 16/32 bits tendo uma quota de mercado de cerca de 75%. 3.2.2 Os processadores Java (ARM Jazelle Technology) A tecnologia ARM Jazelle pretende fazer a combinao entre uma arquitectura embarcada RISC de 32 bits e a tecnologia JAVA, permitindo que aplicaes escritas em JAVA se possam executar juntamente com um sistema operativo, uma camada de midleware ou cdigo de aplicaes j existentes num simples processador. Esta soluo de processador-nico oferece melhor performance, menor custo e menor consumo, quando comparada com solues de coprocessador ou de processador duplo. [12]

Fig.3 Diagrama de Blocos do microprocessador PicoJava II

Pgina 4/10

Ao conjunto de 139 Bytecodes executados directamente em hardware constant loads, variable loads/stores, array load/stores etc... Existe mais um conjunto de 88 Bytecodes executados em software floating point integer division switch invoke etc...
Fig. 5 Core AR-M926EJ-S

(iconst_0, dconst_0, ...) (iload, dstore, ...) (iaload, dastore, ...)

(ddiv, dadd, dmul, ...) (idiv, irem, ldiv, lrem) (tableswitch, lookupswitch) (invokevirtual, invokestatic, ...)

O core AR-M926EJ-S tem no seu ncleo um microprocessador RISC de 32 bits baseado na tecnologia Jazellle, caches de dados e instrues de tamanho flexvel. [11] 3.2.3 Arquitectura do ARM926EJ (O Jazelle Enabled Processor da ARM ) Arquitectura RISC de 32/16 bits Tem uma MMU (Memory Management Unit) on board, o que lhe permite executar sistemas operativos como p.e. Linux, Palm OS, Windows CE Baseado na arquitectura de Harvard, separa o bus de Instrues do bus de Dados seguindo o bus a especificao AMBA, Advanced High-performance Bus (AHB) Permite seleccionar o tamanho das Caches de Dados e de Instrues Baseado no core ARM9EJ-S Clock de 200 Mhz > 1000 CaffeineMarks Este processador permite executar os Bytecodes quer por hardware ,quer por software, seleccionando-se o modo de execuo atravs da utilizao ou no de lgica de descodificao Java 12k portas lgicas consumo de 0.075mW per Caffeine Marks re-mapeamento dinmico do Stack para registos fetches de 32 bits (4 JAVA bytecodes) para um desenvolvimento fcil de um sistema on-chip (SoC), uma interface do tipo Embedded Trace Macrocell (ETM) e uma outra interface de interligao on-chip do tipo AMBA(R) AHB (Advanced HighPerformance Bus) so tambm fornecidas 3.2.4 Instruction Set Est baseado no instruction set ARMv5TEJ, podendo este ser estendido atravs do uso de coprocessadores. Este instruction set, acelera a execuo de Java por um factor de 8x e reduz o consumo em 80 % quando comparado a cores no aceleradas para Java.

3.2.5 AMBA Bus um standard que especifica um bus integrado no chip delineando uma estratgia para interligao e gesto de blocos funcionais, formando uma arquitectura do tipo System-On-Chip (SOC). AMBA utiliza uma metodologia de design reutilizvel, definindo um backbone comum para os mdulos SOC Uma arquitectura SOC baseada em AMBA, consiste num bus de sistema de alta-performance (AHB) e num bus de perifricos (APB). O bus AHB, liga os microprocessadores embarcados a perifricos de alta performance, controladores de DMA, memria on-chip e interfaces, enquanto o bus APB liga os perifricos de uso comum. 3.2.6 Pipeline Este processador tem dois modos de funcionamento: o modo Java em que os Bytecodes so executados por hardware, e o modo Thumb em que os Bytecodes so executados por software. Quando est no modo Java (execuo por hardware), o CPU tem um pipeline de 6 andares: FETCH (Instruction Fetch), JAZELLE (descodificao dos Bytecodes Java), DECODE (descodificao ARM/THUMB, leitura de registos, descodificao de registos), EXECUTE (deslocamento e unidade de aritmtica e lgica (ALU), computao dos produtos parciais), MEMORY (Somador/Acumulador e Saturao, Acesso memria), WRITE-BACK (escrita de registos). Este modo introduz mais 12000 portas-logicas no microprocessador. No modo Thumb, o pipeline de 5 andares, sendo que o andar JAZELLE no utilizado. 3.2.7 ARM 7EJ O ARM 7EJ, irmo do ARM 926EJ, foi desenhado para ter um baixo consumo (0,4 mW/Mhz) e destina-se a aplicaes/produtos que sejam sensveis ao custo (0,85mm2 ). A sua performance de 380 CaffeineMarks a uma velocidade de 18 Mhz

Pgina 5/10

3.2.8 Testes

3.3.3 Java Processing Core (JEM2) O JEM2 (Figura 8) o microprocessador Java que o aJ-80 utiliza, para substituir o interpretador de Java ( oftware s translation layer) e o RTOS (kernel layer). As performances alcanadas na execuo dos Bytecodes Java, so muito semelhantes s de um processador RISC a executar C compilado, devendo -se este facto aos Bytecodes Java serem as instrues nativas do JEM2 [1]. Em termos de recursos de hardware necessrios para implementar o JEM2, so de destacar as suas 25.000 gates e 32bytes de ROM [2].
Fig. 6 Analise comparativa

3.3 - AJile-80 3.3.1 Introduo A implementao do processador Java que vamos descrever, tem a denominao de aJ-80 e foi criado pela Ajile Systems. Com o aJ-80, a Ajile Systems colocou no mercado um processador de baixo consumo que se destina ao mercado de sistemas embarcados. 3.3.2 Arquitectura A arquitectura do aJ-80 (Fig. 7) a denominada system-ona-chip (SOC) e tem as seguintes caractersticas: 32 bits [4]; Arquitectura de duplo bus interno: oBus do processador Isola os elementos que requerem grande largura de banda (CPU, Memria e a interface com o e xterior) [1]; oBus perifrico Providencia o acesso aos perifricos on-chip [1]; Memria: o Bloco de 32Kb de RAM utilizado sobretudo para armazenamento do Stack do JEM2 [1]; o Bloco de 16Kb de RAM de micro-cdigo utilizado para implementar o kernel de tempo real, os Bytecodes estendidos e as instrues personalizadas [1]. CPU Descrito na seco 3 [1]. MJM Descrita na seco 5 [1].
Fig. 8 Java Processing Core (JEM2)

3.3.4 Instruction Set As instrues nativas do aJ-80 so os Bytecodes da Java Virtual MachineTM e ainda os designados extended Bytecodes, que so a implementao das primitivas de threading da tecnologia Java (tal como wait, yield, notify, monitorenter e monitorexit, etc) e do suporte a I/O. A finalidade destes extended Bytecodes, eliminar a necessidade de um real-time operating system tradicional (RTOS) [1] [2]. 3.3.4.1 Custom Instructions A principal diferena de implementao entre o aJ-80 e outras implementaes de processadores Java que este realiza todas as suas instrues atravs de um controlador de microcdigo re-programvel, o que permite ao fabricante adicionar instrues personalizadas [2]. Estas instrues so java bytecodes extendidos e que resultam da programao do microcodigo que as implementa no controlador de microcdigo. A incluso destas novas instrues permite um aumento significativo de performance em algoritmos utilizados frequentemente [1]. Um exemplo de uma possibilidade para uma instruo personalizada uma instruo que realizasse a raiz quadrada. Esta instruo substituiria as invocaes do mtodo java.lang.Math.sqrt quando o ficheiro .class estivesse a ser processado [1]. Os aumentos de performance alcanados pelo uso das instrues personalizadas varia entre 5 vezes mais (para algoritmos simples) e 50 vezes mais (para algoritmos complexos) [1].

Fig. 7 Arquitectura do aJ-80

Pgina 6/10

3.3.6 Multiple JVM Manager (MJM) Permite ao aJ-80 executar em paralelo duas aplicaes Java. Isto conseguido atravs da existncia de dois ambientes JVM, em que as aplicaes so executadas, tendo cada uma um espao de memria protegido e suporte de multi-threading [1] [4]. A MJM (Figura 9) fornece tambm recursos de timing e lgica de interrupes para assegurar que nenhuma JVM interfira com as necessidades de processamento de outra JVM. Assim, a MJM mantm time slices alocadas para cada JVM lgica.

3.3.8 Testes Um programa simples a correr a 74 Mhz consistindo num loop com um teste lgico e duas escritas de I/O compila-se no mximo para 7 Java Bytecodes e executa-se a 460 kHz que so cerca de 3 milhes de Java Bytecodes por segundo [4]. De referir uma possibilidade interessante: Uma unidade de processamento RISC que tipicamente necessita de 100K gates, pode reduzir o consumo de energia at 75% se usar o JEMCORE1 integrado no seu chip, como coprocessador [5]. Nota 1: JEMCORETM um ncleo de processador de baixo consumo e execuo directa de Java Bytecodes baseado no JEM2. 3.4 - lavaCORE 3.4.1 Introduo O lavaCORE o um processador Java de 32 bits que foi desenhado para suportar uma grande variedade de aplicaes Java embarcadas [14]. Esta tecnologia permie a personalizao e a reconfigurao dinmica que lhe confere flexibilidade quanto gama de aplicaes para que pode ser utilizado [15]. 3.4.2 LavaCORE Processor O lavaCORE um processador de 32 bits planeado para incorporar as arquitecturas FPGA Xilinx Virtex [14]. O -II core do processador consiste nos mdulos apresentados no diagrama de Blocos do lavaCORE (Figura 4) [13].

Fig. 9 Multiple Java Virtual Machine Manager

3.3.7 Resumo O aJ-80 no tendo nenhum interpretador ou compilador Just-in-time (JIT), alcanando performances na execuo de aplicaes Java ao nvel de processadores RISC a executarem aplicaes compiladas para as suas linguagens nativas, devido em grande parte ao seu microprocessador Java, que utiliza como instrues nativas, os Bytecodes de Java. Outros aspectos que melhoram a performance so conseguidas devido aos Bytecodes estendidos, que implementam funcionalidades presentes na linguagem Java tal como as threads, que possibilitam operaes atmicas de threading em cerca de 1s em comparao com uma linguagem de alto nvel, que pode levar vrios s a completar a mesma tarefa [1]. Para alm dos desempenhos alcanados, o aJ-80 apresenta uma vantagem que o torna como uma boa soluo para os vrios sistemas em que pode ser utilizado. Esta vantagem a utilizao de instrues personalizadas pelo fabricante, que lhe permite optimizar os principais algoritmos a serem executados. De frisar ainda que os baixos consumos de energia que o aJ-80 consegue, devem-se ao facto deste no ter (ao contrrio dos processadores convencionais) necessidade de incorporar um interpretador de software nem o referido RTOS.

Fig. 10 Diagrama de Blocos do lavaCORE Descrio: ALU ALU de inteiros de 32 bits que suporta operaes sobre integers e long integers [13]; Local Memory Usa o bloco SelectRam da FPGA e o tamanho depende dos requisitos especficos da aplicao [13]; Interrupt Controler Determina os vectores endereo das interrupes [13]; Programmable Timer Incorpora dois timers de 24 bit [13]; Register File Implementada com uma RAM de porto Duplo [13];

Pgina 7/10

Floating Point Unit Implementa as operaes add, sub, mul, div, int to float conversion [13]; Encryption Unit Implementa o algoritmo DES (Data Encryption Standard ), que fornece cifra ao nvel do hardware para aplicaes que necessitem de dados seguros [13]; Garbage Collector Gesto automtica armazenamento para as aplicaes [13]; de

melhorando assim o custo dado que apenas o que necessrio estar presente na implementao do lavaCORE. Assim que estiver parametrizado, o lavaCORE ento sintetizado em VHDL podendo ser testado. 3.4.4.2 Linker/Application Builder Fornece o suporte necessrio para executar um aplicao Java embarcada no processador LavaCORE [14]. O linker construi as boot tables, cdigos de inicializao de classes e atribui interrupes a trap handlers. A imagem executvel, incorporada no runtime enviroment e a aplicao Java no bloco SelectRam. 3.4.4.3 Application Debugger A Application Debugger faz interface com o processador e permite funcionalidades como single step, conditional break point, register e file monitors. A execuo do lavaCORE pode ser seguida tanto em instrues como em ciclos de relgio. 3.4.5 Concluso A grande flexibilidade de um core que seja especifico em relao aplicao, e que possibilite a reconfigurao dinmica de hardware programvel, possibilita a reduo de custo e optimizao dos gastos de energia e performance alcanados [14]. O lavaCORE apresenta estas caractersticas dado que no se limita a executar Java Bytecodes directamente em hardware, tornando-o assim uma boa opo para o mercado de sistemas embedded, o facto de ter sido desenhado para correr em hardware reprogramvel, podendo ser alterado dinamicamente consoante a sua aplicao [14]. Apostando claramente nas capacidades de configurao do LavaCore, a Xilinx tm disposio dos fabricantes de dispositivos, cores fixos nos formatos VHDL, Verilog e Netlists que podem ser reconfigurados e sintetizados para hardware atravs do LavaCore Configuration Enviroment consoante as necessidades dos mesmos [17].

3.4.3 Instruction Set O instruction set do lavaCORE implementa as instrues da Java Virtual Machine (JVM), especificadas no The Java Virtual Machine Specification de Tim Lindholm e Frank Yellin, Addison-Wesley, 1999 [14]. Na sua configurao base, o lavaCORE implementa um conjunto de instrues de Bytecodes em hardware, tais como criao de objectos, invocao de mtodos, tratamento de excepes, sincronizao, etc. ... [14]. So tambm includas algumas instrues que embora no pertencendo especificao da JVM so necessrias ao processador para gerir o Stack e estado dos registos entre outros [14]. 3.4.4 Software Tools 3.4.4.1 Configuration Enviroment Interface grfica que permite ao utilizador configurar o core do Processador conforme as suas necessidades (Fig. 11).

Fig. 11 Ambiente de Configurao O Parameterized Core Specification um modelo formal comportamental alto-nivel do processador escrita em VHDL; O lavaCORE automaticamente sintetiza a implementao a partir desta especificao Assim, cada implementao do lavaCORE diferente quanto optimizao em termos de gasto de energia, velocidade e rea [13]. Como por norma cada sistema embarcado apenas utiliza um pequeno subconjunto do instruction set da JVM, o Configurable Enviroment permite analisar uma aplicao para ajudar a determinar que Java Bytecodes podem ser omitidos ou implementados apenas em software,

4 - CONCLUSO O denominador comum a todos os processadores foi, atingir bons desempenhos com custos ao nvel de consumo de energia extremamente baixos, chegando mesmo em alguns caso a ser desenvolvidos, processadores com o mesmo ncleo de processamento Java mas com outras caractersticas que permitam um menor consumo como o exemplo do ARM 7EJ. Dos 3 processadores revistos neste artigo, de notar a pouca diferena entre eles de um modo geral, procurando todos eles um razovel equilbrio entre as instrues implementadas a nvel de hardware e as instrues microcodificadas no ncleo do sistema, permitindo assim a sua expanso para verses mais recentes da JVM, ou

Pgina 8/10

funcionalidades extras acessveis apenas ao sistema operativo consoante os casos.

[7] - Sun Microsystems, Inc.: The CLDC HotSpot Implementation Virtual Machine, 2002 http://java.sun.com/products/cldc/wp/CLDC Paper.pdf HI White-

[8] - Sun Microsystems, Inc., Java HotSpot Virtual Machine, Maio 2001 http://wwws.sun.com/software/solaris/java/wphotspot/java_ HotSpot_WP_Final_4_30_01.pdf [9] Sun Microsystems, Inc : The K Virtual Machine Datasheet, Abril 2003 http://java.sun.com/products/cldc/ds [10] Vijaykrishnan Narayanan : Java Technology-Based Microprocessors: The Past, The Future submetido para tese de Ph.D., Universidade de Flrida do Sul, 1998 [11] ARM926EJ -S Jazelle-enhanced macrocell http://www.arm.com/armtech/ARM926EJ_S?OpenDocume nt [12] ARM Jazelle Technology 5 - REFERNCIAS BIBLIOGRFICAS [1] Real-time Low-power Java Systems:
TM

Fig. 10 Relao de custo hardware/software

Assim, de um modo geral pode-se dizer que o objectivo de produzir um processador de baixo consumo com razoveis desempenhos a nvel de aplicaes Java foi claramente conseguido, comeando agora, a procurar-se modos eficientes de incorporar estes microprocessadores em outros processadores j desenvolvidos sob a forma de coprocessador, com o objectivo de elevar o seu desempenho na execuo de Java Bytecodes sem prejudicar a normal execuo dos programas.

http://www.arm.com/armtech/jazelle?OpenDocument
[13] lavaCORE Configurable Java Processor Core http://www.xilinx.com/products/logicore/alliance/dsi/dsi_java_pro c.pdf [14] - lavaCORE Configurable Java Processor Core http://www.spacecoretech.org/coretech2001/Proceedings/30_NO V_FRI/TRACK_1/NISA_I/pdfs/lavacorepaper.pdf [15] - Derivation Systems Demonstrates "lavaCORE" Configurable Java(tm) Processor FPGA Core at ESC-WEST 2000 http://www.derivation.com/news/pressrelease_09-26-2000.html [16] - Tim Lindholm & Frank Yellin,The JavaTM Virtual Machine Specification, Second Edition, 1999 : http://java.sun.com/docs/books/vmspec/2ndedition/html/VMSpecTOC.doc.html [17] LavaCore Configurable Java Processor Core, 11 de Abril, 2001 http://www.xilinxchina.com/products/logicore/alliance/dsi/dsi_java_proc.pdf [18] Hardware Implementation of the Java Virtual Ma-

Processor aJ-80 aJile

http://www.ajile.com/downloads/aj-80.pdf [2] - aJile Extends Line of Single-Chip Java TechnologyBased Processors with New Device for Low-Cost Embedded Applications http://www.ajile.com/downloads/aJ-80PressRelease.pdf [3] Ashley Partis, Design of a Native Embedded Java Processor, submetido para o grau de bacharelato, Universidade de Queensland, Austrlia, Outubro 2001 http://innovexpo.itee.uq.edu.au/2001/projects/s369602/thesi s.pdf [4] JstampTM SYSTRONIX Real-Time Native JavaTM Module http://jstamp.systronix.com/Resource/jstamp_datasheet_we b.pdf [5] System-on-Chip Designers Can Now Integrate A Native Java(TM) Technology-Based Processor Into LowPower Mobile Applications http://java.sun.com/industry/news/story/36540.do [6] - Sun Microsystems, Inc.: Connected Limited Device Configuration Specifications, Maio 2003 http://java.sun.com/products/cldc

chine
http://murray.newcastle.edu.au/users/students/1999/c9510422/bac kground4.html

Pgina 9/10

Você também pode gostar