FACULDADE DE E NGENHARIA DA UNIVERSIDADE DO P ORTO Aproximação de funções elementares sem redução de argumento Filipe Alexandre Brito Meireles Programa de Mestrado Integrado em Engenharia Electrotécnica e de Computadores Orientador: António José Duarte Araújo Junho de 2010
72
Embed
Aproximação de funções elementares sem redução de ... · Lista de Figuras 2.1 Evolução do erro de aproximação para vários polinómios aproximantes de grau 2 para a função
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
FACULDADE DE ENGENHARIA DA UNIVERSIDADE DO PORTO
Aproximação de funções elementaressem redução de argumento
Filipe Alexandre Brito Meireles
Programa de Mestrado Integrado em Engenharia Electrotécnica e de Computadores
O cálculo de funções matemáticas elementares é feito por aproximações. Existem diversosmétodos que permitem aproximar funções e que se aplicam a diferentes requisitos. Entre eles, asaproximações polinomiais permitem aproximar qualquer função contínua recorrendo a polinómiosque são as funções mais simples de uma variável. O cálculo de funções por aproximações poli-nomiais compreende três etapas. Redução do argumento a um intervalo mais conveniente, cálculodo polinómio no intervalo reduzido e reconstrução do argumento para o domínio completo dafunção. Com este trabalho, e recorrendo a este método de aproximação, aplicado a várias funçõeselementares, investigou-se as vantagens de abdicar das etapas de redução e reconstrução do ar-gumento que muitas vezes se traduzem em sobrecarga de cálculo. Em particular, aplicações emque o cálculo de funções elementares é necessário, podem beneficiar da não realização da reduçãoe reconstrução do argumento quando à priori é conhecida a gama de valores em que se pretendecalcular a função. A avaliação desta alternativa é concretizada pela implementação num dispos-itivo reconfigurável do tipo FPGA. A principal linha de acção a explorar, é o impacto produzidona ocupação de área e latência de cálculo, tanto pelo método tradicional como para a alternativaque aqui se propõe. A análise dos resultados obtidos, mostra que em determinadas circunstânciase para algumas funções é vantajoso abdicar destas etapas traduzindo-se numa optimização dasmétricas em causa.
i
ii
Abstract
The computation of elementary mathematical functions is performed by approximations. Thereare several methods that allow us to approximate functions which apply to different requirements.Among them, the polynomial approximation allow us to approximate any continuous functionusing polynomials that are simpler functions of one variable. The computation of functions bypolynomial approximations involves three steps: Range reduction; computation of the polyno-mial in the reduced interval and range reconstruction. The goal of this work is to research theadvantages of giving up the steps of range reduction and reconstruction, that many times lead tocomputational overhead. Applications that need computation of elementary functions may benefitfrom this method when we know in advance the sub-domain in which we want to compute thefunction. The evaluation of this alternative is performed in an "FPGA like"configurable device.The success of this method is evaluated by its impact in area occupation and latency of the compu-tation. The results will show us that in certain circumstances and for some functions this methodresults in an optimization of these metrics.
iii
iv
Agradecimentos
Agradeço ao meu orientador António Araújo pelo estímulo, e pelo apoio que tornou possívela concretização deste trabalho.
Ao meu colega Filipe Fernandes pelo apoio, ajuda e caminhada conjunta.
Ao meu Grande irmão Paulo Meireles que embora não estando presente me deu a força e oapoio que eu precisava.
Agradeço em especial à minha namorada Diana Silva por toda a paciência, apoio e confiançaem mim e por toda a sua ajuda.
Por fim um agradecimento muito muito especial aos meus pais Teresa Neto e Daniel Netopor todo o apoio e a enorme força que me deram, pela compreensão e todos os sacrifícios quepassaram e que tornaram isto possível e sobre tudo pela confiança que depositaram em mim.
3.1 Diagrama de implementação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2 Análise de recursos consumidos pela representação em vírgula fixa e vírgula flu-
tuante em função da largura dos operandos [2]. . . . . . . . . . . . . . . . . . . 243.3 Formas de divisão de segmentos. . . . . . . . . . . . . . . . . . . . . . . . . . . 263.4 Segmentação hierárquica aplicada a diferentes funções. . . . . . . . . . . . . . . 273.5 Grau do polinómio em função do intervalo de aproximação para a função cos(x)
com uma precisão de 12 bits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.6 Arquitectura de implementação do método CRA com segmentação de intervalos. 323.7 Arquitectura de implementação do método CRA sem segmentação de intervalos. 333.8 Arquitectura de implementação do método SRA com segmentação de intervalos. 333.9 Arquitectura de implementação do método SRA sem segmentação de intervalos. . 333.10 Arquitectura de implementação da segmentação de intervalos. . . . . . . . . . . 343.11 Diagrama representativo do fluxo de cálculo através de uma máquina de estados. 35
4.1 Área para cos(x) sem segmentação com uma precisão de 8 bits. . . . . . . . . . . 404.2 Latência para cos(x) sem segmentação com uma precisão de 8 bits. . . . . . . . . 404.3 Área para cos(x) sem segmentação com uma precisão de 12 bits. . . . . . . . . . 404.4 Latência para cos(x) sem segmentação com uma precisão de 12 bits. . . . . . . . 404.5 Área para cos(x) sem segmentação com uma precisão de 16 bits. . . . . . . . . . 414.6 Latência para cos(x) sem segmentação com uma precisão de 16 bits. . . . . . . . 414.7 Área para ex sem segmentação com uma precisão de 8 bits. . . . . . . . . . . . . 414.8 Latência para ex sem segmentação com uma precisão de 8 bits. . . . . . . . . . . 414.9 Área para ex sem segmentação com uma precisão de 12 bits. . . . . . . . . . . . 424.10 Latência para ex sem segmentação com uma precisão de 12 bits. . . . . . . . . . 424.11 Área para ex sem segmentação com uma precisão de 16 bits. . . . . . . . . . . . 424.12 Latência para ex sem segmentação com uma precisão de 16 bits. . . . . . . . . . 424.13 Área para cos(x) com segmentação com uma precisão de 8 bits. . . . . . . . . . 444.14 Latência para cos(x) com segmentação com uma precisão de 8 bits. . . . . . . . 444.15 Área para cos(x) com segmentação com uma precisão de 12 bits. . . . . . . . . . 444.16 Latência para cos(x) com segmentação com uma precisão de 12 bits. . . . . . . . 444.17 Área para cos(x) com segmentação com uma precisão de 16 bits. . . . . . . . . . 45
ix
x LISTA DE FIGURAS
4.18 Latência para cos(x) com segmentação com uma precisão de 16 bits. . . . . . . . 454.19 Área para ex com segmentação com uma precisão de 8 bits. . . . . . . . . . . . . 464.20 Latência para ex com segmentação com uma precisão de 8 bits. . . . . . . . . . . 464.21 Área para ex com segmentação com uma precisão de 12 bits. . . . . . . . . . . . 464.22 Latência para ex com segmentação com uma precisão de 12 bits. . . . . . . . . . 464.23 Área para ex com segmentação com uma precisão de 16 bits. . . . . . . . . . . . 474.24 Latência para ex com segmentação com uma precisão de 16 bits. . . . . . . . . . 474.25 Gráfico da função log(x) no intervalo [0,10]. . . . . . . . . . . . . . . . . . . . . 484.26 Gráfico da função
3.1 Resultados de segmentação linear e hierárquica para várias funções com precisãode aproximação de 8, 16 e 24 bits. . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Valores resultantes da segmentação de intervalos para a função cos(x). . . . . . . 313.3 Valores resultantes da segmentação de intervalos para a função ex. . . . . . . . . 31
4.1 Grau dos polinómios usados na aproximação de cos(x), sem segmentação, paradiferentes precisões e intervalos de aproximação. . . . . . . . . . . . . . . . . . 39
4.2 Grau dos polinómios usados na aproximação de exp(x), sem segmentação, paradiferentes precisões e intervalos de aproximação. . . . . . . . . . . . . . . . . . 41
4.3 Número de ciclos de relógio necessários para devolver o resultado da aproximaçãopara cada método, SRA e CRA, para diferentes precisões e intervalos de aproxi-mação. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.4 Percentagem de ganho da área de implementação e latência de cálculo, da aprox-imação polinomial das funções cos(x) e ex para uma precisão de cálculo de 8 bitspelo método SRA face ao método CRA. . . . . . . . . . . . . . . . . . . . . . . 47
4.5 Percentagem de ganho da área de implementação e latência de cálculo, da aproxi-mação polinomial das funções cos(x) e ex para uma precisão de cálculo de 12 bitspelo método SRA face ao método CRA. . . . . . . . . . . . . . . . . . . . . . . 47
4.6 Percentagem de ganho da área de implementação e latência de cálculo, da aproxi-mação polinomial das funções cos(x) e ex para uma precisão de cálculo de 16 bitspelo método SRA face ao método CRA. . . . . . . . . . . . . . . . . . . . . . . 48
xi
xii LISTA DE TABELAS
Abreviaturas e Símbolos
MSB Most Significant BitCRA Com Redução de ArgumentoSRA Sem Redução de argumentoε erro do resultadoεaprox erro de aproximaçãoεqt erro de quantificaçãoFPGA Field Programmable Gate Array
xiii
xiv ABREVIATURAS E SÍMBOLOS
Capítulo 1
Introdução
1.1 Descrição e Objectivos
Este trabalho enquadra-se no cálculo de funções matemáticas elementares através de aproxi-
mações polinomiais. Este é um dos principais métodos e permite calcular a aproximação de uma
determinada função num processo composto por três etapas, são elas: redução do argumento, cál-
culo do polinómio no intervalo reduzido e por fim a reconstrução do resultado para o intervalo
completo a aproximar. O cálculo de um polinómio aproximante por si só implica saber qual o in-
tervalo de aproximação e qual o grau que o caracteriza. Para um determinado intervalo, a escolha
do grau do polinómio condiciona o erro resultante da aproximação, na medida em que, quanto
maior é o seu grau, menor será o erro de cálculo. No entanto, polinómios com grau muito elevado
são indesejáveis porque terão que ser realizadas mais operações para os calcular e assim obter o
resultado da aproximação. Para evitar esta sobrecarga de cálculo reduz-se o intervalo de aproxi-
mação a um intervalo mais pequeno e o polinómio é calculado para esse sub-intervalo da função,
evitando assim a necessidade de recorrer a polinómios de grau elevado. Depois, expande-se o re-
sultado com base nas características da função a calcular. Mas a inclusão destas duas etapas induz
também alguma sobrecarga de cálculo na medida em que é necessário realizar operações para re-
duzir e reconstruir o argumento. Embora este procedimento geral seja considerado vantajoso para
a generalidade das situações, o cálculo de uma função em intervalos pequenos do seu domínio e
com requisitos de precisão baixos não necessita de polinómios de grau elevado, podendo assim
ser desnecessário recorrer a estas duas etapas. Com este trabalho pretende-se avaliar em que cir-
cunstâncias é vantajoso abdicar das etapas de redução e reconstrução do argumento conhecendo a
gama de valores em que se pretende realizar o cálculo e a respectiva precisão, recorrendo para isso
a processos de optimização, tais como a segmentação de intervalos [3]. Este processo traduz-se
numa optimização do método de cálculo da aproximação polinomial na medida em que permite
o cálculo de polinómios de grau mais reduzido uma vez que a avaliação será feita para intervalos
mais pequenos. No entanto, seu impacto será mais significativo no método alternativo que aqui se
1
2 Introdução
propõe avaliar, uma vez que este é mais propício a polinómios de grau elevado e a aproximação é
feita somente pela etapa que é optimizada por este processo, resultando assim numa optimização
do processo completo de cálculo. Por sua vez, o impacto no método tradicional não será tão sig-
nificativo uma vez que em contraste, tipicamente não necessita de polinómios de grau elevado e a
sua aproximação já é feita num intervalo reduzido. Mais ainda, a segmentação do intervalo apenas
vai interferir neste caso numa das etapas, não resultando em nenhuma optimização no cálculo da
redução e reconstrução do argumento.
Em particular, o objectivo principal deste trabalho consiste em analisar o impacto resultante da
implementação em hardware, nomeadamente a ocupação de área e o atraso de cálculo da imple-
mentação em dispositivos reconfiguráveis do tipo FPGA, e a partir dos resultados obtidos definir
em que circunstâncias se deve aplicar cada um dos métodos.
1.2 Contributos
As aproximações de funções baseadas em polinómios recorrem a uma metodologia composta
por três etapas no sentido de optimizar o processo de cálculo para qualquer intervalo de aprox-
imação. No entanto o cálculo de funções elementares em hardware, particularmente no âmbito
dos sistemas embutidos, por exemplo em aplicações relacionadas com processamento digital de
sinal, requer na maioria das vezes a avaliação de uma determinada função apenas num intervalo
específico. Nesse sentido, a principal contribuição desta tese é estabelecer critérios que permitam
decidir qual a melhor forma de realizar a aproximação de uma função, com redução de argumento
ou sem redução de argumento, partindo da precisão pretendida e da gama de valores do argumento.
Como métricas, são usadas a área e a latência das implementações em hardware. Adicionalmente
é proposta a utilização de segmentação de intervalos como medida de optimização das técnicas
implementadas, principalmente do método alternativo que aqui se pretende expor.
1.3 Estrutura da dissertação
Além deste capítulo introdutório, a dissertação está dividida em mais 4 capítulos.
No capítulo 2 são abordados os métodos de cálculo de funções elementares e em particular
todo o processo que diz respeito à avaliação por aproximações polinomiais. É descrito um caso
concreto que visa ilustrar a metodologia envolvida bem como algumas considerações de cálculo.
São ainda analisadas algumas considerações relativamente ao processo de cálculo proposto.
No capítulo 3 é ilustrado todo o processo relativo à metodologia adoptada no cálculo e im-
plementação de aproximações polinomiais. São expostas e analisadas todas as considerações e
implicações que envolvem aproximações polinomiais com ou sem redução de argumento no âm-
bito da implementação em hardware, bem como algumas soluções de optimização do processo de
1.3 Estrutura da dissertação 3
cálculo. É feita também uma descrição da arquitectura e descrito o cálculo dos segmentos usados
para cada função.
No capítulo 4 é feita a análise dos resultados obtidos através dos métodos implementados,
realçando-se as situações em que é vantajoso não realizar a redução do argumento.
Por fim, no capítulo 5 são tiradas todas as conclusões e feitas algumas sugestões de trabalho
futuro.
4 Introdução
Capítulo 2
Funções elementares
Neste capítulo são abordados os aspectos que condicionam o cálculo de funções elementares,
e em particular, toda a metodologia de cálculo relativa ás aproximações por polinómios. São ainda
incluídas algumas considerações relativas ao cálculo sem redução de argumento.
2.1 Abordagens de cálculo
Na maior parte dos casos as funções elementares não podem ser calculadas de forma exacta,
tendo que ser calculada uma aproximação. Existem vários métodos que permitem aproximar
funções, destacando-se os seguintes:
• Aproximações polinomiais
• Aproximações baseadas em tabelas
• Aproximações baseadas em tabelas e polinómios
• Aproximações shift-and-add
Talvez o mais popular dos métodos de aproximação é o algoritmo CORDIC que pertence a um
grupo de aproximações denominado shift-and-add [1]. Este algoritmo tem uma grande importân-
cia histórica porque entre outras possibilidades permitiu implementar o cálculo de várias funções
elementares em máquinas calculadoras. Este método de cálculo é iterativo e usa apenas oper-
ações de deslocamento e adição, possibilitando assim uma implementação com poucos recursos
quando comparado com outros métodos. No entanto, apresenta algumas limitações. O processo
de cálculo é mais lento face aos outros métodos e aplica-se apenas a um grupo restrito de funções
elementares (funções f que necessitam de satisfazer determinadas propriedades algébricas), sendo
que os métodos baseados em aproximações polinomiais ou tabelas podem ser usados na avaliação
de qualquer função contínua.
5
6 Funções elementares
O método baseado em tabelas consiste em tabelar uma função para todos os valores possíveis
de entrada. No entanto, apenas é viável para argumentos de largura baixa (tipicamente até 16 bits)
pois caso contrário a quantidade de memória necessária para guardar os valores de entrada numa
tabela seria impraticável.
Para contornar este problema é usado o método que combina tabelas e aproximações poli-
nomiais. As aproximações polinomiais [1] consistem em aproximar uma função contínua f (x)
através de um ou mais polinómios de grau n num intervalo finito genérico [a,b], tendo como ob-
jectivo minimizar a diferença entre a função a aproximar e a sua aproximação. Os polinómios
são funções simples que podem ser avaliadas usando um número finito de operações aritméti-
cas nomeadamente adições, multiplicações e subtracções. As aproximações baseadas em tabelas
e polinómios são usadas hoje em dia em larga escala pelo seu elevado desempenho [1]. Este
método consiste em separar o intervalo de aproximação em sub-intervalos mais pequenos, calcu-
lar os polinómios aproximantes em cada sub-intervalo e guardar os coeficientes respectivos a cada
segmento numa tabela. Posteriormente é feita a avaliação do polinómio através da consulta desta
tabela. Uma vez que é feita a divisão do intervalo em secções, isto trás vantagens na medida em
que permite aproximar a função com um conjunto de polinómios de grau baixo. No entanto o uso
de tabelas pode resultar em elevados requisitos de memória.
O método baseado apenas em aproximações polinomiais reporta ao século XIX muito antes do
aparecimento da electrónica e computação modernas. Esta abordagem consome poucos recursos
de memória, mas por outro lado, pode apresentar uma desvantagem face ao uso combinado com
tabelas. Para cálculos com precisão elevada em intervalos grandes pode ser necessário o uso de
polinómios de grau elevado, tendo implicações no atraso de cálculo e na propagação do erro uma
vez que é necessário executar mais operações.
Tradicionalmente o cálculo de funções elementares era realizado por rotinas de software. Com
os avanços da tecnologia microelectrónica foram surgindo dispositivos de implementação de cir-
cuitos cada vez mais rápidos e com capacidade para suportar circuitos mais complexos. Desta
forma, o cálculo de funções elementares começou a ser feito em hardware permitindo alcançar
melhor desempenho. Este é fortemente dependente da função a calcular, do método de aproxi-
mação utilizado e da precisão desejada.
Neste trabalho vamos focar o estudo com base no cálculo de funções elementares através de
aproximações polinomiais.
2.2 Aproximações polinomiais
2.2.1 Critérios de aproximação
As aproximações polinomiais têm como objectivo minimizar a diferença entre uma função
f (x) a aproximar e um polinómio aproximante p(x), ou seja, o objectivo é minimizar ‖p− f‖.
2.2 Aproximações polinomiais 7
Minimizar esta "distância"consiste em minimizar o erro de aproximação. Existem vários critérios
que permitem aproximar funções através de polinómios, embora sejam aqui focados os dois prin-
cipais. Estes critérios de aproximação são [1]: minimização do erro médio, resultando as least
squares approximations, e minimização do erro máximo absoluto, resultando as least maximum
approximations vulgarmente designadas por minimax. As equações 2.1 e 2.2 definem a distância
que é minimizada pelos critérios descritos respectivamente,
‖p− f‖2 =
√∫ b
aω(x)( f (x)− p(x))2dx (2.1)
‖p− f‖∞= max
a≤x≤bω(x) |p(x)− f (x)| (2.2)
onde [a,b] corresponde ao intervalo a aproximar e ω é uma função de "peso"não negativa e con-
tínua, que pode ser usada para seleccionar partes de [a,b] onde se deseja que a aproximação seja
mais exacta.
No âmbito do objectivo principal proposto para este trabalho e de forma a garantir eficaz-
mente que é cumprida uma determinada precisão de cálculo, é conveniente e mais adequado que
o polinómio seja calculado de forma a minimizar o erro máximo da aproximação. Para tal serão
avaliados os resultados obtidos para os principais métodos de aproximação considerados pelos in-
vestigadores no que diz respeito apenas ao erro máximo. Entre outras, as formas polinomiais mais
comuns para realizar aproximações são:
• Taylor
• Legendre
• Chebyshev
• Minimax
O método Minimax pertence ao grupo das least maximum approximations e os restantes ao
grupo das least squares approximations. Com carácter exemplificativo, na tabela 2.1 estão repre-
sentados os erros máximos resultantes de vários polinómios de segunda ordem para calcular ex no
intervalo [-1,1].
Taylor Legendre Chebyshev MinimaxErro Máximo 0.218 0.081 0.050 0.045
Tabela 2.1: Erro máximo absoluto de vários polinómios aproximantes de grau 2 da função ex nointervalo [−1,1] [1].
8 Funções elementares
Pode-se concluir que o erro máximo resultante da aproximação pelo método de Taylor é sub-
stancialmente superior aos outros métodos. Isto acontece porque a expansão de Taylor é adequada
apenas a aproximações locais (em torno de um valor) e não deve ser usada para aproximações
gerais (num determinado intervalo). Assim sendo este método não se adequa a este trabalho.
Resta então a avaliação dos restantes três métodos. A figura 2.1 ilustra para o caso anterior, a
evolução do erro em função do intervalo de aproximação.
Figura 2.1: Evolução do erro de aproximação para vários polinómios aproximantes de grau 2 paraa função ex no intervalo [−1,1] [1]
Embora o método de Legendre apresente o menor erro médio, interessa a aproximação que
devolva o menor erro máximo pelo que voltando aos resultados da tabela 2.1, este erro é menor
para a aproximação Minimax. Considere-se outro caso em que é aproximada a função |x| pelos
mesmos métodos, com polinómios de grau 2 no intervalo [−1,1]. A figura 2.2 demonstra o resul-
tados das aproximações polinomiais face ao valor real da função nesse intervalo e na tabela 2.2
estão presentes os resultados relativos ao erro máximo de aproximação obtido para cada caso.
Tabela 4.3: Número de ciclos de relógio necessários para devolver o resultado da aproximaçãopara cada método, SRA e CRA, para diferentes precisões e intervalos de aproximação.
No que diz respeito ao consumo de recursos, verifica-se que para uma precisão de 8 bits, o
método SRA revela-se vantajoso para argumentos até 3 bits, e para os outros requisitos de precisão
a vantagem do uso deste método fica-se por argumentos até 2 bits.
A discrepância existente entre os resultados obtidos para área e latência resulta da influência
da segmentação. Este método trás na maioria dos casos vantagens no que diz respeito ao atraso de
cálculo porque quanto maior for o número de segmentos usados para repartir o intervalo, menor
terá que ser o grau do polinómio que aproxima cada sub-intervalo sendo que o número de segmen-
tos não influencia a latência. No entanto, quantos mais segmentos forem usados param repartir o
intervalo, maior será a complexidade do hardware, uma vez que é necessário guardar em memória
todos os coeficientes dos polinómios respectivos a cada segmento, sendo que a partir de um de-
terminado ponto, o “alívio” de complexidade resultante de abdicar da redução do argumento será
superado pelo aumento de complexidade resultante da segmentação.
Verifica-se ainda, que para uma precisão de 16 bits, quando se aproxima uma função para um
argumento de 5 bits, o consumo de recursos “dispara” de forma desproporcional relativamente aos
outros casos. Isto acontece porque nestes termos, o número de bits necessário à representação dos
operandos aumenta consideravelmente.
As variações repentinas que se verificam nos resultados obtidos para a latência, resultam do
44 Resultados
número de multiplicadores que são usados para cada caso. A FPGA usada na síntese destes mode-
los, têm disponíveis 12 multiplicadores dedicados de 18x18 bits. Se os operandos forem superiores
a múltiplos de 18 bits é necessário recorrer a mais um multiplicador. Isto resulta em atrasos de
cálculo superiores pois existe um atraso substancial introduzido pelo uso de mais multiplicadores
para realizar um só cálculo.
Figura 4.13: Área para cos(x) com segmen-tação com uma precisão de 8 bits.
Figura 4.14: Latência para cos(x) com segmen-tação com uma precisão de 8 bits.
Figura 4.15: Área para cos(x) com segmen-tação com uma precisão de 12 bits.
Figura 4.16: Latência para cos(x) com segmen-tação com uma precisão de 12 bits.
As figuras 4.19 a 4.24 ilustram os resultados obtidos para a função ex com precisões de 8, 12
e 16 bits para polinómios de grau 2, 3 e 4 respectivamente. Pelas mesmas razões que a função
anterior, a gama do argumento coberta para esta função não ultrapassa os 3 bits. Neste caso a
gama de x avaliada é inferior devido ao comportamento da função. Para valores superiores a
4.2 Resultados obtidos 45
Figura 4.17: Área para cos(x) com segmen-tação com uma precisão de 16 bits.
Figura 4.18: Latência para cos(x) com segmen-tação com uma precisão de 16 bits.
3 bits, a função ex tem um comportamento fortemente não linear. Isto conduz à necessidade da
representação dos operandos com larguras muito elevadas, nomeadamente da sua parte inteira pois
à medida que x aumenta f (x)>> x. Assim, para valores superiores a 3 bits, os resultados obtidos
era desproporcionalmente superiores para o método de cálculo SRA não tendo qualquer interesse
a sua consideração. Através da análise das figuras conclui-se que mesmo para argumentos baixos
entre 2 e 3 bits, onde a não linearidade da função ainda não é tão acentuada, o aumento do consumo
de recursos resultante do método SRA é mais acentuado face ao método CRA. No entanto, e
pelas mesmas razões da função cos(x) o atraso de cálculo é sempre menor para o método SRA.
Assim sendo, o uso deste método é vantajoso para argumentos até 2 bits quando se pretende uma
optimização de área e latência e para argumentos até 3 bits quando se pretende uma optimização
do atraso de cálculo.
Até este ponto, conclui-se que a avaliação das funções por aproximações polinomiais recor-
rendo a segmentação de intervalos para as funções cos(x) e ex pelo método SRA, é muito vantajoso
no que respeita à latência de cálculo. No entanto, relativamente ao consumo de recursos apre-
senta limitações traduzindo vantagens apenas para argumentos de 2 e 3 bits. Nestes termos, o uso
deste método será mais indicado para implementações que necessitem de calcular as aproximações
destas funções optimizando o tempo de cálculo em detrimento, em alguns casos, do aumento dos
recursos ocupados. Assim, a escolha do método a aplicar depende inteiramente dos requisitos da
implementação. Interessa ainda referir que relativamente à função ex, o cálculo pelo método SRA
é vantajoso tanto a nível do consumo de recursos como do atraso de cálculo para valores de x < 0,
uma vez que esta função é fortemente linear no intervalo [−∞,0]. Assim pode-se aproximar a
função recorrendo a muito poucos segmentos e com polinómios de grau baixo.
46 Resultados
Figura 4.19: Área para ex com segmentaçãocom uma precisão de 8 bits.
Figura 4.20: Latência para ex com segmen-tação com uma precisão de 8 bits.
Figura 4.21: Área para ex com segmentaçãocom uma precisão de 12 bits.
Figura 4.22: Latência para ex com segmen-tação com uma precisão de 12 bits.
Os resultados obtidos para as funções cos(x) e ex, estão sumariados em três tabelas ( 4.4, 4.5
e 4.6) que ilustram a percentagem de ganho do método de aproximação polinomial SRA face ao
método CRA, para as as três precisões de cálculo analisadas, 8, 12 e 16 bits, respectivamente.
Considere-se agora as funções log(x) e√
x. Estas funções têm comportamentos muito semel-
hantes em torno de zero. A avaliação desta função pelo método SRA apresenta implicações muito
grandes mesmo para argumentos pequenos em torno de zero e precisões baixas. Como se pode
ver pelas figuras 4.25 e 4.26 que representa a função log(x) e√(x) no intervalo [0,10], denota-se
uma forte não linearidade em torno de zero, pelo que as conclusões obtidas para uma são válidas
para a outra. Ir-se-á então avaliar a função log(x).
4.2 Resultados obtidos 47
Figura 4.23: Área para ex com segmentaçãocom uma precisão de 16 bits.
Figura 4.24: Latência para ex com segmen-tação com uma precisão de 16 bits.
Tabela 4.4: Percentagem de ganho da área de implementação e latência de cálculo, da aproximaçãopolinomial das funções cos(x) e ex para uma precisão de cálculo de 8 bits pelo método SRA faceao método CRA.
Tabela 4.5: Percentagem de ganho da área de implementação e latência de cálculo, da aproximaçãopolinomial das funções cos(x) e ex para uma precisão de cálculo de 12 bits pelo método SRA faceao método CRA.
Se se pretender aproximar a função log(x) com uma precisão de 8 bits no intervalo [0.001,0.5],
para o método de aproximação CRA, a aproximação requer um polinómio de grau 2 com coefi-
cientes da ordem de grandeza de apenas 1 bit para a parte inteira. Por outro lado, a aproximação
pelo método SRA, recorrendo a segmentação de intervalos (caso contrário o grau do polinómio
teria que ser incomportavelmente grande), para um polinómio de grau 2, os coeficientes que o
caracterizam são da ordem de grandeza de 105. Neste caso seriam necessários 16 bits, apenas
para representar a parte inteira dos coeficientes. Uma vez que a redução de argumento neste caso
apenas consiste numa operação de deslocação e a reconstrução traduz-se numa multiplicação, a
Tabela 4.6: Percentagem de ganho da área de implementação e latência de cálculo, da aproximaçãopolinomial das funções cos(x) e ex para uma precisão de cálculo de 16 bits pelo método SRA faceao método CRA.
Figura 4.25: Gráfico da função log(x) no inter-valo [0,10].
Figura 4.26: Gráfico da função√
x no intervalo[0,10].
diferença entre o número de ciclos de relógio necessários para efectuar o cálculo da aproximação
polinomial para um determinado x, para ambos os métodos, CRA e SRA, seria de apenas dois
ciclos, em contraste com as funções cos(x) e ex que devido ao uso do divisor demoram em média
quase o dobro no caso CRA. Posto isto, facilmente se conclui que relativamente ao atraso de cál-
culo o método SRA não trás quaisquer vantagens pois o período de operação neste caso é muito
superior ao método CRA devido ao número de bits necessários para representar os operandos.
Mesmo para a baixa precisão considerada e para o intervalo de aproximação muito reduzido o
número de bits necessários para representar a parte inteira dos coeficientes pelo método SRA é 16
vezes maior que para o método CRA. Isto traduz-se também num enorme aumento do consumo de
recursos. Estas conclusões foram sustentadas precisamente numa implementação com os requisi-
tos antes mencionados e podem ser suportadas com a análise da função ex que apresenta o mesmo
comportamento (a mesma não linearidade acentuada) mas neste caso para argumentos superiores
3 bits como se pode ver pela figura 4.27.
No entanto, recorrendo ao método SRA para aproximar a função log(x) a partir de 0.5, que é
4.2 Resultados obtidos 49
Figura 4.27: Gráfico da função ex no intervalo [0,10].
precisamente o limite mínimo do intervalo normalizado, trás grandes vantagens à imagem do que
acontece com a função ex para valores de x < 0, uma vez que que nesta gama de valores a função
é fortemente linear.
Assim se conclui que a avaliação das funções elementares log(x) e√
x por aproximações
polinomiais pelo método SRA não trás vantagens de aplicação em sistemas onde na maior parte
das vezes é requerida a aproximação de funções num sub-intervalo que contém a origem.
Alguns resultados obtidos por outros autores, nomeadamente apresentados em [15], ilustram
semelhanças respeitantes ás conclusões de ambos os métodos, para diferentes comportamentos
das funções, mais concretamente no que diz respeito à linearidade das mesmas.
50 Resultados
Capítulo 5
Conclusão
5.1 Conclusões
Neste trabalho investigaram-se as vantagens de um método alternativo de cálculo de funções
elementares, baseado em aproximações polinomiais, no âmbito da implementação em dispositivos
reconfiguráveis do tipo FPGA. Mais concretamente, avaliou-se o impacto no consumo de recur-
sos e atraso de cálculo face ao método tradicional com redução de argumento (CRA). O método
proposto, SRA, consistiu em aproximar funções através de polinómios no intervalo completo de
aproximação, abdicando assim das etapas de redução e consequente reconstrução do argumento
que caracterizam a abordagem.
Como forma de optimização do processo de cálculo para garantir melhores resultados, recorreu-
se à segmentação de intervalos que embora traga vantagens para ambos os métodos de aproxi-
mação, o seu impacto é mais acentuado no método SRA aqui proposto. Isto acontece porque
a segmentação de intervalos é aplicada única e exclusivamente ao cálculo do polinómio aproxi-
mante, e neste sentido todo o processo de avaliação referente ao método SRA é optimizado, em
contraste com o método CRA que envolve ainda as etapas de redução e reconstrução do argumento
que não beneficiam da segmentação.
A implementação de ambos os métodos exigiu uma análise cuidada e exaustiva de forma a
minimizar as métricas em causa, que dependem de vários factores, nomeadamente da largura de
representação dos operandos, do grau do polinómio aproximante e do número de segmentos que
compõem o intervalo de aproximação. Os dois últimos factores são dependentes um do outro uma
vez que a implementação da segmentação tem como objectivo principal a diminuição do grau dos
polinómios aproximantes que é sem qualquer dúvida o maior entrave no âmbito da implementação.
Para tal, foi necessário determinar um equilíbrio entre ambos. Optou-se, após vários testes e
considerações, por calcular o número de segmentos necessários para cada caso, com base no grau
do polinómio mínimo que aproxima a função no intervalo normalizado de forma a cumprir a
precisão requerida, resultando assim numa optimização conjunta entre área ocupada e latência de
51
52 Conclusão
cálculo. A metodologia adoptada para este caso, bem como para a optimização da largura dos
operandos, consistiu numa abordagem de tentativa e erro.
Relativamente à arquitectura proposta, ambos os métodos de aproximação foram descritos
recorrendo a uma máquina de estados, uma vez que o cálculo de aproximações polinomiais
desenrola-se segundo um processo recursivo composto maioritariamente por multiplicações seguidas
de adições, tal como se pode concluir da análise da expressão que compõe um polinómio, ilustrada
no capítulo 2. Como forma de optimização da arquitectura, nomeadamente da área ocupada, a
implementação foi estruturada de forma a resultar em partilha de recursos, mais precisamente na
partilha de um bloco multiplicador/somador que realiza uma multiplicação seguida de uma adição,
por ciclo de relógio, que como foi referido são precisamente os operadores com maior peso em
termos das métricas de implementação utilizadas.
Cumprido o objectivo do trabalho, conseguiu-se delimitar em que casos e em que circunstân-
cias é vantajoso abdicar das etapas de redução e reconstrução de argumento para diversas funções
resultando algumas conclusões, descritas seguidamente.
Relativamente à segmentação de intervalos, concluiu-se que a sua aplicação é absolutamente
necessária na medida em que os resultados obtidos sem recorrer a este processo demonstram uma
limitação muito grande do método de cálculo SRA devido ao inevitável e desproporcional aumento
do grau do polinómio aproximante com o aumento da largura do intervalo de aproximação para
satisfazer um determinado requisito de precisão. Estes resultados verificam-se mesmo para pre-
cisões baixas e intervalos de aproximação pequenos em torno de zero. Desta forma, o método de
aproximação SRA não é vantajoso na aplicação em sistemas dedicados onde embora se pretenda
avaliar funções em sub-intervalos do seu domínio, estes sub-intervalos são na maior parte dos
caso superiores aos que permitem optimização de métricas pelo método SRA sem segmentação de
intervalos.
A implementação do processo de segmentação de intervalos permitiu obter resultados mais
favoráveis embora apresente também algumas limitações. Zonas em que as funções apresentam
fortes não-linearidades, o cálculo de aproximações polinomiais pelo método SRA não resulta em
qualquer vantagem. Isto verifica-se principalmente devido à necessidade de recorrer a polinómios
de grau mais elevado para cumprir o requisito de precisão ou por outro lado segmentar o intervalo
em muitas secções que se traduz de uma maneira ou de outra num aumento muito significativo
da área de implementação face ao método CRA. Isto é notório nomeadamente para as funções
log(x) e√
x em torno de zero e para a função ex para argumentos superiores a 3 bits. Isto acontece
porque, tal como foi referido no capítulo 3, o aumento do grau do polinómio traduz-se em mais
coeficientes, o que implica por um lado o aumento da complexidade do hardware e por outro o
aumento do atraso de cálculo por ser necessário realizar mais operações. Por sua vez, o aumento
do número de segmentos que dividem o intervalo, obriga a guardar mais valores em memória que
se traduz num aumento da área necessária. Os resultados obtidos para regiões mais lineares das
5.1 Conclusões 53
funções, indicam que é vantajoso, até uma certa gama de valores, abdicar destas duas etapas, em
particular para valores superiores a 0.5 para as funções log(x) e√
x e para valores de x < 0 que se
estendem para x << 0 para a função ex, embora o estudo relativo a estes casos não tenha sido apro-
fundado por não apresentar grande interesse. Relativamente aos resultados obtidos para a função
ex na gama de valores cobertos, concluiu-se que o método de cálculo SRA é vantajoso no que
diz respeito ao atraso de cálculo, no entanto apenas apresenta vantagens relativas ao consumo de
recursos para argumentos inferiores a 3 bits, sendo que a escolha do método a aplicar depende dos
requisitos da implementação. Os resultados obtidos para a função trigonométrica cos(x) demon-
stram a forte dependência desta função da segmentação de intervalos, uma vez que é uma função
periódica que revela fortes não linearidades no seu período e portanto em todo o seu domínio.
A avaliação desta função pelo método SRA apresenta grandes vantagens, nomeadamente no que
diz respeito ao atraso de cálculo, que se estende a toda a gama de valores coberta e que é válida
para intervalos simétricos. Isto resulta em grande parte da necessidade de implementar um divisor
no cálculo pelo método CRA que é um operador lento, sendo necessários mais ciclos de relógio
para realizar a aproximação para este caso. Mas mesmo para esta função, a escolha do método
a aplicar, tal como acontece para a função ex, depende dos requisitos da implementação uma vez
que a ocupação de recursos resultante do método de cálculo SRA é menor apenas para gamas do
argumento baixas, dependendo da precisão requerida.
Terminado o trabalho, conclui-se que para zonas fortemente não lineares das funções, a so-
brecarga de cálculo introduzida pela método SRA dá origem a elevados consumos de recursos
de implementação bem como atrasos de cálculo mais elevados, resultantes em grande parte pela
necessidade de aumentar a largura da representação dos operandos, não apresentando portanto
quaisquer vantagens face ao método tradicional. Para zonas mais lineares, dependendo da gama
de aproximação, o método SRA demonstra grandes vantagens sobretudo a nível da latência de
cálculo na medida em que neste caso o número de ciclos de relógio necessários para completar o
cálculo da aproximação polinomial é substancialmente inferior face ao método CRA. Isto deve-se
ao uso de um divisor, necessário para a realização da redução do argumento.
Existem muito poucos trabalhos que exploram o estudo de aproximações de funções ele-
mentares sem recorrer às etapas de redução e reconstrução do argumento, nomeadamente em [15]
são apresentados alguns resultados relativos também ao método de aproximação SRA, mas neste
caso através de aproximações com tabelas e polinómios. No entanto, não foram encontrados quais-
quer dados referentes a estudos sobre a aplicação de segmentação de intervalos ao cálculo através
de aproximações polinomiais. Neste sentido, este método de optimização aplicado ao cálculo por
aproximações polinomiais, ilustra o aspecto inovador deste trabalho.
54 Conclusão
5.2 Trabalho Futuro
Propõe-se como trabalho futuro, explorar um pouco mais este método de cálculo através de
aproximações por tabelas com polinómios levado a cabo em [15], e avaliar este método também
recorrendo a aproximações racionais, que embora envolvam a implementação de divisores, que
são operadores que traduzem grande sobrecarga de cálculo, requer aproximações com polinómios
de grau mais baixo que como se concluiu deste trabalho, apresenta uma mais valia para o método
de aproximação sem redução de argumento.
Relativamente ao trabalho aqui levado a cabo, propõe-se estender a avaliação a mais funções
elementares e, uma abordagem mais trabalhosa mas que embora possa traduzir melhores resulta-
dos no que diz respeito à segmentação de intervalos. Mais concretamente, não centrar a escolha do
número de segmentos que compõem o intervalo de aproximação numa perspectiva de optimizar
ambas as métricas de uma maneira geral (para todos os requisitos sob avaliação), mas sim caso a
caso. Quer isto dizer que a escolha do número de segmentos, poderá ser feita individualmente para
cada caso em que se pretenda uma determinada precisão de cálculo para um intervalo específico,
e optimizar essa escolha de formas diferentes para diferentes requisitos.
Referências
[1] Jean-Michel Muller. Elementary functions: algorithms and implementation. BirkhauserBoston, Inc., NJ, USA, segunda edição, 1997.
[2] O. Mencer, W. Luk, e H. Fu. Optimizing hardware function evaluation. Em Proceedingsof Swiss Federal Institute of Technology (ETH), Architecture of Computing Systems, Zurich,Switzerland, 2007.
[3] Dong-U Lee, W. Luk, J. Villasenor, e P. Y. K. Chenung. Hierarchical segmentation schemesfor function evaluation. Em Proceedings of the IEEE International Conference on Field-Programmable Technology (FPT’2003), páginas 92–99, 2003.
[4] R. G. Selfridge. Approximations with least maximum error. Em Pacific Journal of Mathe-matics, páginas 247–255, 1953.
[5] M. Daumas, C. Mazenc, X. Merrheim, e J.-M. Muller. Modular range reduction: a new al-gorithm for fast and accurate computation of the elementary functions. Journal of UniversalComputer Science, 1(3):162–175, 1995.
[6] Jyri Ylostalo. Function approximation using polynomials. Signal Processing Magazine,IEEE, 23:99–102, 2006.
[7] Jun Cao, Belle W. Y. Wei, e Jie Cheng. High-performance architectures for elementaryfunction generation. Em Proceedings of the 15th IEEE Symposium on Computer Arithmetic,páginas 136–144, Washington, DC, USA, 2001. IEEE Computer Society.
[8] Shmuel Gal. Computing elementary functions: A new approach for achieving high accuracyand good performance. Em Proceedings of the Symposium on Accurate Scientific Computa-tions, páginas 1–16, London, UK, 1986. Springer-Verlag.
[9] J. G. Ganssle. A Guide to Approximations. The Ganssle Group,http://www.ganssle.com/approx/approx.pdf, 2001.
[10] J. Detrey e F. de Dinechin. Floating point trigonometric functions for FPGAs. Em Field-Programable Logic and Applications, páginas 29–34. LIP, ENS-Lyon, IEEE, 2007.
[11] Romain Michard, Arnaud Tisserand, e Nicolas Veyrat-Charvillon. FPGA approximationswith 3-bit coefficients and low-precision estimations of the powers of x. Em Proceedings ofthe 2005 IEEE International Conference on Application-Specific Systems, Architectures andProcessors, páginas 334–342, Greece, 2005. IEEE Computer Society.
[12] E. L. Oberstar. Fixed-Point Representation and Fractional Math. Oberstar Consulting,http://www.superkits.net/whitepapers.htm, 2007.
55
56 REFERÊNCIAS
[13] Dong-U Lee e John D. Villasenor. A bit-width optimization methodology for polynomial-based function evaluation. IEEE Transactions on Computers, 56(4):567–571, 2007.
[14] Shinobu Nagayama, Tsutomu Sasao, e Jon T. Butler. Design method for numerical functiongenerators based on polynomial approximation for FPGA implementation. Em Proceedingsof the 10th Euromicro Conference on Digital System Design Architectures, Methods andTools, páginas 280–287, Washington, DC, USA, 2007. IEEE Computer Society.
[15] Dong-U Lee, Altaf Abdul Gaffar, Oskar Mencer, e Wayne Luk. Adaptive range reductionfor hardware function evaluation. Em Proceedings of the IEEE Int Conference on Field-Programmable Technology, páginas 169–176, 2003.