Operações de Ponto Flutuante para o FemtoJava
Alunos: Felipe Zschornack - [email protected]
Bruno Silveira Neves - [email protected]
Arquitetura e Projeto de Sistemas VLSI I
Professores: Flávio Rech WagnerMarcelo Johann
Operações de Ponto Flutuante para o FemtoJava
2
Motivação
FemtoJava Implementa parte das instruções da JVM
(Java Virtual Machine) Executa bytecodes Java nativamente Voltado para aplicações embarcadas Diversas Versões (Low Power, Low Power
com Forwarding, etc) Operações aritméticas inteiras (8 e 16
bits)
Operações de Ponto Flutuante para o FemtoJava
3
Introdução
Computadores lidam com formatos numéricos de ponto fixo e ponto flutuante
1985: Uso do padrão IEEE 754 aumenta a portabilidade dos programas que
trabalham com números nesse formato melhorar a qualidade das operações aritméticas
realizadas
Operações de Ponto Flutuante para o FemtoJava
4
Números em FP (IEEE 754)
Sinal: 1 bit (bit 31) Expoente: 8 bits (bits 30 à 23) Mantissa: 23 bits (bits 22 à 0)
Representação Geral:
(-1)sinal x mantissa x 2expoente
Operações de Ponto Flutuante para o FemtoJava
5
Números em FP (IEEE 754)
Forma Normalizada: número não possui dígito não significativo na
representação contém 24 bits e não 23 (primeiro dígito
sempre 1 e implícito) aumenta a precisão dos números
Representação:
(-1)sinal x (1 + mantissa) x 2expoente
Operações de Ponto Flutuante para o FemtoJava
6
Números em FP (IEEE 754)
Expoente em notação com peso Peso = número a ser subtraído do valor
representado no expoente de maneira a representar o valor real do expoente
Valor = 12710
Facilidade para ordenações a partir de comparações inteiras
Nova Representação:
(-1)sinal x (1 + mantissa) x 2(expoente – peso)
Operações de Ponto Flutuante para o FemtoJava
7
Representações Numéricas eCasos Especiais (IEEE 754)
e = expoente + peso
e = 255, mantissa <> 0 v = NaN e = 255, mantissa = 0 v = (-1)s e = 0, mantissa <> 0 v = desnormalizado e = 0, mantissa = 0 v = (-1)sx(zero) 0 < e < 255 v = (-1)sx(1.mantissa)x2(e-peso)
Operações de Ponto Flutuante para o FemtoJava
8
Estrutura Geral
Operações de Ponto Flutuante para o FemtoJava
9
Visão Interna da FPU
Operações de Ponto Flutuante para o FemtoJava
10
FPU_SUM
Operações de Ponto Flutuante para o FemtoJava
11
FPU_PRENORM_AS
Operações de Ponto Flutuante para o FemtoJava
12
FPU_POSNORM_AS
Operações de Ponto Flutuante para o FemtoJava
13
FPU_MULT
Operações de Ponto Flutuante para o FemtoJava
14
FPU_POSNORM_MD
Operações de Ponto Flutuante para o FemtoJava
15
Estágio Alcançado
Módulos de soma, subtração e multiplicação implementados
Verificação parcial da validade dos resultados de operação (mais testes) 2710 células lógicas 100 pinos I/O
Operações de Ponto Flutuante para o FemtoJava
16
Trabalhos Futuros Validação dos módulos implementados, e do sistema como um todo,
de maneira mais exaustiva; Melhoramento no processo de arredondamento (atualmente
somente é realizado o truncamento do número); Detecção de ocorrência de overflow/underflow sobre os resultados
das operações realizadas; Implementação de um módulo para divisão em ponto flutuante, o
qual ainda não foi iniciado; Definição de um divisor em ponto fixo (a ser utilizado no divisor de
ponto flutuante); Melhoramento no algoritmo de multiplicação inteira (fator crítico) Verificação da ocorrência de casos especiais Incorporação dos módulos à arquitetura do FemtoJava
Operações de Ponto Flutuante para o FemtoJava
17
Aspectos Positivos
Visão mais abrangente da linguagem e suas potencialidades
Melhor compreensão de conceitos relacionados a projeto de hardware
Maior conhecimento sobre a arquitetura do FemtoJava e da aritmética FP
Troca de experiências com os demais colegasReusabilidade e adaptabilidade de
componentes previamente desenvolvidos
Operações de Ponto Flutuante para o FemtoJava
18
Dificuldades Encontradas
Inexperiência em relação ao uso da linguagem VHDL e com o paradigma de projeto de hardware
Inexperiência em relação as ferramentas utilizadas (Quartus II e Max-Plus II)
Pouca prática no uso dos conceitos relacionados com o desenvolvimento de sistemas digitais
Falta de uma compreensão inicial mais aprofundada do domínio do problema
Operações de Ponto Flutuante para o FemtoJava
19
Bibliografia[ASH 98] ASHENDEN, Peter J.. The Designer's Guide to VHDL. San Francisco:
Morgan Kaufmann, 1998.[CAR 01] CARRO, Luigi. Projeto e Prototipação de Sistemas Digitais. Porto Alegre:
Ed. Universidade/UFRGS, 2001.[ERC 00] ERCEGOVAC, Milos. Introdução aos Sistemas Digitais. Porto Alegre:
Bookman, 2000.[HEN 00] HENNESSY, John L.. Organização e projeto e computadores: a interface
hardware/software. 2 ed.. Rio de Janeiro: LTC, 2000.[IDO 81] IDOETA, Ivan V.. Elementos de Eletrônica Digital. 3 ed.. São Paulo: Érica,
1981.[IEE 85] Institute of Electrical and Electronics Engineers. IEEE Standard for Binary
Floating-Point Arithmetic (IEEE Std 754-1985). New York: IEEE, 1985.
[ITO 99] ITO, Sergio Akira. Estudo de requisitos de hardware para a plataforma java : trabalho individual. Porto Alegre: CPGCC da UFRGS, 1999.
[ITO 00] ITO, Sergio A.. Projeto de Aplicações Específicas com Microcontroladores Java Dedicados. Porto Alegre: 2000.
[USS 03] USSELMAN, Rudolf. Documentation for Floating Point Unit Project.