modelagem de uma unidade de soma para nÚmero em

29
ARTHUR HENRIQUE COUTINHO MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM PONTO FLUTUANTE LONDRINA–PR 2013

Upload: phungthien

Post on 08-Jan-2017

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

ARTHUR HENRIQUE COUTINHO

MODELAGEM DE UMA UNIDADE DE SOMAPARA NÚMERO EM PONTO FLUTUANTE

LONDRINA–PR

2013

Page 2: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 3: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

ARTHUR HENRIQUE COUTINHO

MODELAGEM DE UMA UNIDADE DE SOMAPARA NÚMERO EM PONTO FLUTUANTE

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

Orientador: Prof. Dr. Wesley Attrot

LONDRINA–PR

2013

Page 4: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

Arthur Henrique CoutinhoModelagem de uma unidade de soma para número em ponto flutuante/ Arthur

Henrique Coutinho. – Londrina–PR, 2013-27 p. : il. (algumas color.) ; 30 cm.

Orientador: Prof. Dr. Wesley Attrot

– Universidade Estadual de Londrina, 2013.

1. Ponto flutuante. 2. Palavra-chave2. I. Weslety Attrot. II. UniversidadeEstadual de Londrina. III. Faculdade de Ciência da Computação. IV. Título

CDU 02:141:005.7

Page 5: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

ARTHUR HENRIQUE COUTINHO

MODELAGEM DE UMA UNIDADE DE SOMAPARA NÚMERO EM PONTO FLUTUANTE

Trabalho de Conclusão de Curso apresentadoao curso de Bacharelado em Ciência da Com-putação da Universidade Estadual de Lon-drina para obtenção do título de Bacharel emCiência da Computação.

BANCA EXAMINADORA

Prof. Dr. Wesley AttrotUniversidade Estadual de Londrina

Orientador

Prof. Dr. Segundo Membro da BancaUniversidade/Instituição do Segundo

Membro da Banca

Prof. Msc. Terceiro Membro da BancaUniversidade/Instituição do Terceiro

Membro da Banca

Londrina–PR, 24 de novembrode 2013

LONDRINA–PR2013

Page 6: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 7: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

COUTINHO, A. H.. Modelagem de uma unidade de soma para númeroem ponto flutuante. 27 p. Trabalho de Conclusão de Curso (Graduação).Bacharelado em Ciência da Computação – Universidade Estadual de Londrina,2013.

RESUMO

Este trabalho desvreve o funcionamento da soma entre números em pontoflutuante baseando-se no padrão IEEE 754. O circuito de uma unidade funcionalpara processadores de 32 bits foi modelado incluindo adaptações para correção deerros de arredondamento e adequação a um pipeline. A construção dessa unidadese dá em duas grandes etapas: apresentação e explicação de um modelo fiel ao dopadrão IEEE 754 e seu aprimoramento para o pipeline. As duas versões são testadasusando-se a FPGA Xilinx Spartan-3A.

Palavras-chave: ponto flutuante. soma binária. circuito.

Page 8: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 9: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

COUTINHO, A. H.. Modeling a sum unit to floating point number. 27p. Final Project (Undergraduation). Bachelor of Science in Computer Science –State University of Londrina, 2013.

ABSTRACT

This work discribes the sum between floating point numbers according to theIEEE 754 standard. A circuit of a functional unit for 32 bit processors was modeledincluding adaptations for rounding error correction e a pipeline adequation. Thebuilding process of this unit is given in two greate steps: presenting and explaningof a IEEE 754 faithful model and improving it to the pipeline. The two versions aretested in a FPGA Xilinx Spartan-3A.

Keywords: floating point. binary sum. circuit

Page 10: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 11: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

LISTA DE ILUSTRAÇÕES

Figura 1 – Ilustração de um número em ponto flutuante representado em umaplavra de memória. O bit mais significativo é o primeiro à esquerda.Fonte [4]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Figura 2 – Funções de arredondamento para dois números positivos 𝑥 e 𝑦 . . . . . 22Figura 3 – Somador de ponto flutuante. Fonte: [4]. . . . . . . . . . . . . . . . . . . 23

Figura 4 – Representação de um somador conforme o paradigma de packet-forwarding.Fonte: [8] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Figura 5 – Representação de um somador com caminho de dados duplicado. Fonte:[9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

Page 12: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 13: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

LISTA DE TABELAS

Tabela 1 – Tabela de números especiais e seus respectivos preenchimentos de cadacampo no padrão 32 bits . . . . . . . . . . . . . . . . . . . . . . . . . . 20

Tabela 2 – Direções de arredondamento dadas pela função sobre round bit e stickybit. O sinal − significa que o resultado será truncado. O sinal + significaque o resultado será acrescido do valor 2−𝑝+1 . . . . . . . . . . . . . . . 22

Page 14: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 15: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

SUMÁRIO

Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1 NÚMEROS REAIS E COMPUTADORES . . . . . . . . . . . . . . . . 171.1 História . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.2 O padrão IEEE 754 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.3 A operação de soma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2 Proposta e Trabalhos Relacionados . . . . . . . . . . . . . . . . . . . . 25

Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

Page 16: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 17: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

15

INTRODUÇÃO

Uma unidade de ponto flutuante com propósito geral em processadores de 32 bitsé uma ferramenta aceleradora de aplicações algébricas, gráficas e espaciais atualmentebastante presente no mercado. Seu uso permite que operações entre números reais sejamfeitas em uma quantidade de ciclos muito menor do que quando são feitas coordenadaspor software em uma unidade lógico-aritmética de inteiros. Consequentemente, as com-plexidades de tempo e de espaço de um algoritmo podem ser imediatamente melhoradas,já que deixam de ser necessárias algumas condições, espaço temporário e operações deescrita na memória. Com isso, implementações em hardware muito específicas, como chipsde processamento de sinais, tornam-se possíveis e viáveis a um menor custo de construção.

Viabilizar ou acompanhar o funcionamento de parte importante dessa unidadefuncional, como a soma, acarreta um bom domínio das características citadas. O levanta-mento de dificuldades e técnicas de confecção de circuitos e microchips, de arredondamentode números reais discretizados, e de concorrência de operações em hardware, bem comoos fundamentos teóricos desses dados, são o foco da pesquisa descrita neste documento.Juntamente com o trabalho proposto será implementado uma unidade funcional parasoma em FP a fim de trazer visualização prática dos conceitos levantados. O projeto, porabordar técnicas de otimização em hardware, visa estender conhecimentos da disciplinade Arquitetura e Organização de Computadores.

Page 18: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 19: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

17

1 NÚMEROS REAIS E COMPUTADORES

1.1 HISTÓRIA

A computação, desde quando realizada por equipamentos eletromecânicos, instigou estu-dos de representação de números reais e de operações sobre eles em computadores. Em1914 Leonardo Torres y Quevedo havia preparado uma especificação de máquina eletro-mecânica inspirada na Máquina Analítica de Babbage prevendo operações com númerosreais [1]. Konrad Zuse, um pioneiro da computação, foi responsável em 1941 pela cri-ação do computador Z3, a primeira máquina automática e programável de cálculos, epreocupou-se em incluir tal funcionalidade [1].

O Z3 funcionava com uma representação em ponto flutuante de base dois paranúmeros reais, previa resultados correspondentes a valores infinitos e indeterminados.Além disso possuía um campo de significandos com 14 bits, um campo de expoente de 7bits e um campo de 1 bit para sinal. No entanto, a preocupação com esse tipo de operaçãoera incomum à época, visto que a programação permite se abstrair cálculos complexos.

O suporte a ponto flutuante passou a ser mais presente em equipamentos a partirda década de 1960. Já com a invenção do circuito integrado, nesse período, minicom-putadores, calculadoras financeiras e mainframes atendiam uma pequena demanda demercado. Essa demanda estava nos usos de grandes escritórios corporativos ou em pes-quisas científicas de universidades e institutos. A realidade da computação era dada por,muitas vezes, imediata obsolescência de programas a cada modelo de computador disponi-bilizado pelos fabricantes. A programação com ponto flutuante refletia essa característica,podendo não apenas ser dependente de imposições do fabricante, mas se comportar deforma inadequada em processadores mais antigos ou mais novos [1].

Alguns processadores desse período funcionavam com base 8 para ponto flutuante.O PDP-10, da fabricante DEC, os Burroughs 570 e 6700 são exemplos. Já o IBM 360usava base 16. Atualmente, a maioria extensiva das calculadoras usa base 10 em suarepresentação interna de ponto flutuante [1].

Esse quadro indica que a escolha da base durante o projeto interferia em fato-res competitivos. Os fabricantes promoviam seus produtos conforme sua velocidade, emdetrimento de sua acurária, assim como também ocorria o contrário [2]. Porém, a na-tureza do ponto flutuante persistia em cada produto, tendo os fabricantes que encararum grupo compartilhado de problemas. Esses problemas estavam relacionados com asexceções elaboradas pelos projetistas.

Em alguns computadores, a favor da velocidade, operandos poderiam ser trata-

Page 20: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

18 Capítulo 1. NÚMEROS REAIS E COMPUTADORES

dos como não-zero em comparações, mas como zero em divisões e multiplicações. Umaboa prática era multiplicar o operando por 1.0 antes de torná-lo um divisor. Entretanto,em outros computadores essa multiplicação poderia ocasionar uma exceção de overflow.Dividir números muito pequenos por eles mesmos poderia resultar em overflow. Algunscomputadores poderiam destruir dígitos de precisão durante a multiplicação por 1.0. Ope-rações do tipo 𝑥 − 𝑦 poderiam resultar em 0 mesmo que 𝑥 e 𝑦 fossem diferentes e, emalguns casos, fossem valores altos ([2]).

Programadores dessa época adquiriam hábitos de depuração que, muitas vezes,poderiam diminuir performance. Um exemplo de prática comum era o acréscimo atribui-ções do tipo 𝑥 = (𝑥 + 𝑥) − 𝑥 em pontos críticos do código após a obtenção de algumresultado inesperado durante testes. ([2])

Até então, manter portáteis os softwares numéricos possuía um alto custo como qual apenas grandes corporações e governos, como AT&T e o Pentágono, arcavam. Aprópria imobilidade e custo dos grandes mainframes filtrava interessados em portabilidadede código. Quando microprocessadores começaram a proliferar na década de 1970, realizararitmética de ponto flutuante de forma confiável e previsível em diferentes computadorestornou-se uma preocupação entre mais pessoas ([2]).

Os microprocessadores à época evoluíam rapidamente e já havia sido publicadaa análise de Gordon Earle Moore (fundador da Intel) conhecida como “Lei de Moore”([2]). Ela afirma que os custos de circuitos integrados mantém-se constantes ao passo quesua capacidade de processamento dobra em 18 meses. Em 1976, a Intel projetava umcoprocessador (processador auxiliar à CPU) para seu microprocessador 8086 (de 8 bits).O dispositivo, denominado 8087, deveria fazer cálculos de ponto flutuante usando umaaritmética superior às dos chips concorrentes. Prevendo que novos modelos de processadorpoderiam surgir rapidamente (já era planejado a nova CPU 8088, de 16 bits), o gerente doprojeto, Dr. John Palmer, procurou o professor William Kahan como consultor na elabo-ração de uma nova especificação de aritmética. William Kahan era um dos pesquisadoresque apontavam o crescente custo e dificuldade na manutenção de softwares numéricos,além de já ter experiência em projetos comerciais bem-sucedidos.

Coprocessadores tanto aritméticos quanto para outras finalidades já existiam, po-rém eram produtos recentes. Diversas empresas interessadas em amadurecer seus projetos,foram atraídas pelas reuniões do IEEE p754. A fim de acabar com a anarquia na pro-gramação em ponto flutuante, esse grupo se formou sob a organização do Dr. RobertStewart apoiado pela IEEE. As reuniões, iniciadas em 1977, promoviam reuniões focadasem estabelecer um padrão de aritmética possível de ser seguido por todos os projetistasde microchip. Este padrão veio a ser o IEEE 754-1985.

Page 21: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

1.2. O padrão IEEE 754 19

1.2 O PADRÃO IEEE 754

Para o conjunto dos reais a decomposição de um número pode ser dada pelanotação científica. Nessa representação, um item fracionário e uma potência de 10 multi-plicados traduzem explicitamente a ordem de grandeza e a granularidade do valor:

𝑓𝑟𝑎𝑐 × 10𝑒𝑥𝑝𝑜𝑒𝑛𝑡𝑒 (1.1)

A fração deve ser normalizada como um significando e, portanto, engloba um sinal(positivo ou negativo), um dígito de unidade e dígitos decimais em quantidade indefinida.A potência de dez exige uma base e um expoente dado por um número inteiro. Avaliandocada componente, nota-se que a quantidade não contável de valores advém das quanti-dades ilimitadas de dígitos fracionários para o significando e de dígitos unitários para oexpoente, sendo o produto cartesiano entre os dois conjuntos um conjunto infinito [3]. Li-mitando as duas quantidades, limita-se a quantidade de elementos no produto cartesiano[3].

Ao obter um subconjunto discreto dos reais, consegue-se um conjunto de númerosem ponto flutuante determinado pela precisão (quantidade de dígitos da fração) e peloalcance (expoentes máximo e mínimo) do formato de seus elementos. Um número binárioem FP é, portanto, representado pela tripla (sinal, expoente, significando) denominadasinal-magnitude [4] e seu valor é inferido a partir de

(−1)𝑠𝑖𝑛𝑎𝑙 × 𝑏𝑒𝑥𝑝𝑜𝑒𝑛𝑡𝑒 × 𝑠𝑖𝑔𝑛𝑖𝑓𝑖𝑐𝑎𝑛𝑑𝑜 (1.2)

onde b é a base numérica constante sobre a qual funcionam as computações [5]. Em umambiente binário, essa constante é obrigatoriamente fixada em dois.

Como as únicas configurações possíveis para cada bit são zero ou um, o padrãotorna implícito que o dígito correspondente à unidade do significando seja sempre um,passando-se a considerar apenas os dígitos fracionários. Esses dígitos formam o campodenominado mantissa [4] e o cálculo do elemento representado pode ser visualizado como

(−1)𝑠𝑖𝑛𝑎𝑙 × 𝑏𝑒𝑥𝑝𝑜𝑒𝑛𝑡𝑒 × (1 + 𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎) (1.3)

Conforme o padrão IEEE 754, há dois formatos de número em FP: precisão única(single precision), que usa 32 bits ou uma palavra de memória, e precisão dupla (doubleprecision), que usa 64 bits ou duas palavras de memória. A precisão única, ilustrada naFigura 1, dedica 1 bit para o sinal, 8 bits para o expoente e 23 bits para a mantissa. Na

Page 22: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

20 Capítulo 1. NÚMEROS REAIS E COMPUTADORES

Figura 1 – Ilustração de um número em ponto flutuante representado em uma plavra de memória. O bitmais significativo é o primeiro à esquerda. Fonte [4].

precisão dupla também é dedicado 1 bit para o sinal, porém 11 bits ao expoente e 52 bitsà mantissa.

A fim de reaproveitar hardware de comparação de inteiros, comum a diferentesarquiteturas, o padrão IEEE 754 também determina um ajuste fixado ao expoente paraque seu menor valor possível seja representado com dígitos zero. Assim os bits do expoentetornam-se efetivos em serem mais significativos que os bits fracionários durante a compa-ração inteira. Para que a comparação inteira continue sendo possível, o expoente precisaser armazenado como um “complemento de dois” [4]. Essa notação ajustada denomina-sebiased notation e faz com que o valor do número representado seja determinado por

(−1)𝑠𝑖𝑛𝑎𝑙 × 2𝑐𝑎𝑚𝑝𝑜𝑒𝑥𝑝𝑜𝑒𝑛𝑡𝑒−𝑏𝑖𝑎𝑠 × (1 + 𝑚𝑎𝑛𝑡𝑖𝑠𝑠𝑎). (1.4)

O valor bias é a constante necessária para transformar o menor expoente possívelno inteiro zero através de uma soma. Em precisão única a constante bias é 127 e emprecisão dupla ela é 1023 [5].

Há valores especiais reservados para aritmética de máquina. A Tabela 1 indicasuas representações.

Objeto representado Sinal Expoente Fração+∞ 1 255 0−∞ 0 255 0NaN 1 ou 0 255 não-zero

Tabela 1 – Tabela de números especiais e seus respectivos preenchimentos de cada campo no padrão 32bits

Os valores +∞ e −∞ satisfazem os casos em que um limite existe e é relevante paraa computação. Nas comparações ele é submetido à regra −∞ <qualquer número <+∞e as operações aritméticas mantém o fechamento existente em R. O item NaN (Not aNumber) é um valor não numérico resultante majoritariamente de cálculos indevidos. Oformato IEEE 754 dá espaço para diagnóstico de ocorrência na própria representação deum NaN [5].

Existem cinco casos de exceções que devem ser sinalizados:

Page 23: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

1.2. O padrão IEEE 754 21

∙ Operação inválida: pelo menos um dos operandos é inválido para a operação. Oresultado será NaN.

∙ Divisão por zero (DivideByZero): lançada quando operandos finitos resultam umvalor infinito.

∙ Overflow: se o valor resultante para o campo de expoente for maior do que o expoentemáximo suportado, essa exceção será lançada.

∙ Underflow: se o valor resultante para o campo de expoente for menor do que oexpoente mínimo suportado, essa exceção será lançada. O padrão IEEE 754 nãoespecifica se o Underflow ocorre antes ou após o arredondamento do resultado dasoperações, ficando a critério do projetista. Uma conclusão a ser inferida na ocor-rência dessa exceção pode ser que o resultado seja muito pequeno comparado àacurácia do processador. Assim, o programador pode diferenciar entre um númerozero aproximado e um zero exato (não sinalizado).

∙ Resultado inexato (inexact): Essa é uma exceção típica do arredondamento. Sua flagé levantada para que o programador possa saber se o resultado de uma operação éexato ou não.

Na soma em FP algumas exceções nunca ocorrerão (como a divisão por zero) ouocorrerão sob condições específicas [6]. Porém as exceções overflow, underflow, e resultadoinexato podem ocorrer comumente devido à possibilidade de resultados com expoentespositivos ou negativos muito grandes (em módulo). Resultados inexatos decorrem dearredondamentos [5].

Um resultado de operação em ponto flutuante pode não caber na representaçãoutilizada. Diante disso, surge a necessidade de arredondamento. O IEEE 754 oferece quatromaneiras de se arredondar um resultado obtido. O modo de arredondamento é um estadodo circuito e ao mesmo tempo um sinal a ser propagado. O comportamento assumidotransformará o resultado em um número finito ou infinito. Os quatro modos especificadossão:

∙ Arredondamento para −∞: dado pela função 𝑅𝐷(𝑥), é o maior número em pontoflutuante inferior ou igual a 𝑥 (pode ser −∞).

∙ Arredondamento para +∞: dado pela função 𝑅𝑈(𝑥), é o menor número em pontoflutuante superior ou igual a 𝑥 (pode ser +∞).

∙ Arredondamento para zero: dado pela função 𝑅𝑍(𝑥), é o número em ponto flutuantemais próximo de 𝑥 tal que seu módulo não exceda o módulo de 𝑥.

∙ Arredondamento para o mais próximo: dado pela função 𝑅𝑁(𝑥)

Page 24: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

22 Capítulo 1. NÚMEROS REAIS E COMPUTADORES

Figura 2 – Funções de arredondamento para dois números positivos 𝑥 e 𝑦

Fonte: [1]

Supondo que uma operação de ponto flutuante seja realizada e armazenada tempo-rariamente com uma precisão infinita. Dado um significando composto de dígitos 1.𝑚1𝑚2𝑚3...,a direção de seu arredondamento pode ser dada por uma função entre os bits 𝑟𝑜𝑢𝑛𝑑 = 𝑚𝑝

(round bit), tal que 𝑝 é o maior índice de precisão do significando, e 𝑠𝑡𝑖𝑐𝑘𝑦 = 𝑚𝑝+1 ∨𝑚𝑝+1 ∨ ... (sticky bit). A tabela Table 2 explicita essa função.

Tabela 2 – Direções de arredondamento dadas pela função sobre round bit e sticky bit. O sinal − significaque o resultado será truncado. O sinal + significa que o resultado será acrescido do valor 2−𝑝+1

round / sticky RD RU RN0 / 0 − − −0 / 1 − + −1 / 0 − + − / +1 / 1 − + +

Fonte: [1]

Para as quatro operações aritméticas básicas (adição, subtração, multiplicação edivisão) e raiz quadrada, esses quatro modos de arredondamento são suficientes para quesejam evitados problemas.

1.3 A OPERAÇÃO DE SOMA

Assim como na soma de inteiros, o hardware de soma em ponto flutuante realizatambém a subtração [4]. Da mesma forma, é usado o bit mais significativo (most signifi-cative bit - MSB) para indicar a operação. O procedimento não será um simples cálculoe armazenamento em “complemento de dois”. É necessário realizar diferentes operaçõesem cada campo dos dois operandos e, ao final do processo, agrupar os três campos do

Page 25: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

1.3. A operação de soma 23

resultado e normalizar a disposição dos bits, com shifts à direita ou à esquerda, para queseja mantido o bit implícito do significando 1.𝑚1𝑚2𝑚3....

A soma básica em ponto flutuante consiste de quatro passos principais [4] [7].

O primeiro passo é a equivalência de expoentes, onde se elege o operando como menor valor desse campo para decréscimo de seu significando. Nesse passo, a cadaincremento iterativo do expoente a mantissa sofre uma divisão pelo valor da base numéricautilizada. Na representação binária, onde a base é dois, uma operação de shift na direçãomenos significativa dos bits atende essa divisão. A iteração ocorre até que os expoentessejam iguais. As exceções de underflow, overflow e de inexatidão podem ser sinalizadasnessa etapa.

Em seguida, no segundo passo, a soma dos significandos é realizada como umasoma de inteiros e, então, armazenada. O terceiro passo normaliza o resultado para queo significando tenha seu bit implícito de unidade ativado, novamente podendo sinalizarunderflow, overflow e inexatidão. O quarto e último passo aplica algum método de arre-dondamento caso a mantissa final exceda a quantidade de bits determinada pelo formato.

Figura 3 – Somador de ponto flutuante. Fonte: [4].

Page 26: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM
Page 27: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

25

2 PROPOSTA E TRABALHOS RELACIONADOS

Em [8] projetou-se a realização paralela da soma através de um paradigma de re-presentação binária denominado packet-forwarding. Esse paradigma permite que se con-sigam baixas latências de hardware ao não prosseguir em passos da soma tradicional. Aeconomia de passos é determinada por funções combinacionais de trechos redundantes dosoperandos. Um número redundante é um número representado por mais bits do que o ne-cessário. Através do paradigma packet-forwarding, uma sequência de bits participante donúmero original é recodificada para uso na operação. Um novo formato de representaçãoé necessário, onde todos os campos do IEEE 754 são mantidos, porém um é acrescentado:o carry-round packet. Devido a essa nova representação, previsões de campos resultantespodem ser feitas a um baixo custo. Ao final, no passo de arredondamento, trechos doscampos são efetivamente somados.

Entretanto, a dificuldade de se utilizar uma nova representação de ponto flutuanteleva a escolhas mais clássicas de paralelização. Em [9] uma unidade de soma em pontoflutuante foi projetada para que duas operações fossem realizadas simultaneamente. Paraisso, são construídos dois caminhos de dados diferentes, por onde cada par de operan-dos passa, desde que as operações não sejam dependentes. Um dos caminhos, chamado

Figura 4 – Representação de um somador conforme o paradigma de packet-forwarding. Fonte: [8]

Page 28: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

26 Capítulo 2. Proposta e Trabalhos Relacionados

Figura 5 – Representação de um somador com caminho de dados duplicado. Fonte: [9]

CLOSE, serve para somas em que a diferença entre expoentes seja 1 ou 0. O segundocaminho, denominado FAR de dados dedica-se a somas com diferença de expoentes maiordo que 1. Os mesmos blocos somadores são aproveitados, porém outros blocos são dupli-cados. Isso é uma desvantagem do circuito, que ocupa cerca de 20% mais espaço do queuma unidade convencional.

Neste trabalho será construído um circuito que recebe dois operandos de 32 bitsem ponto flutuante e realiza a sua soma conforme o padrão IEEE 754. Isso implica naconstrução de blocos de arredondamento e de emissão de exceções. O circuito será, emseguida adaptado para o funcionamento em um pipeline. A técnica usada será baseadano segundo trabalho, exposto em [9]. A motivação dessa escolha é a menor dificuldadede se adaptar o circuito existente e a não necessidade de se usar um formato novo derepresentação.

Page 29: MODELAGEM DE UMA UNIDADE DE SOMA PARA NÚMERO EM

27

REFERÊNCIAS

1 MULLER, J. M. et al. Handbook of Floating-Point Arithmetic. 1st. ed. [S.l.]: Springer,2009.

2 SEVERANCE, C. An Interview with the Old Man of Floating-Point. 1998. Disponívelem: <http://www.cs.berkeley.edu/˜wkahan/ieee754status/754story.html>. Acesso em:5.8.2013.

3 GERSTING, J. L. Mathematical Structures for Computer Science. 3rd. ed. [S.l.]: W.H. Freeman and Company, 1993.

4 PATTERSON, D. A.; HENNESSY, J. L. Computer Organization and Design. 3rd.ed. [S.l.]: Elsevier, 2005.

5 IEEE Standard for Floating-Point Arithmetic. IEEE Std 754-2008, p. 1–58, 2008.

6 BRUGUERA, J.; LANG, T. Floating-point fused multiply-add: reduced latency forfloating-point addition. In: Computer Arithmetic, 2005. ARITH-17 2005. 17th IEEESymposium on. [S.l.: s.n.], 2005. p. 42–51. ISSN 1063-6889.

7 WANG, L.-K. et al. Hardware designs for decimal floating-point addition and relatedoperations. Computers, IEEE Transactions on, v. 58, n. 3, p. 322–335, 2009. ISSN0018-9340.

8 NIELSEN, A. et al. An ieee compliant floating-point adder that conforms with thepipeline packet-forwarding paradigm. Computers, IEEE Transactions on, v. 49, n. 1, p.33–47, 2000. ISSN 0018-9340.

9 AMARICAI, A. et al. Exploiting parallelism in double path adders’ structure forincreased throughput of floating point addition. In: Digital System Design Architectures,Methods and Tools, 2007. DSD 2007. 10th Euromicro Conference on. [S.l.: s.n.], 2007. p.132–137.