1 |
Low Cost Floating-Point Extensions to a Fixed-Point SIMD DatapathKolumban, Gaspar January 2013 (has links)
The ePUMA architecture is a novel master-multi-SIMD DSP platform aimed at low-power computing, like for embedded or hand-held devices for example. It is both a configurable and scalable platform, designed for multimedia and communications. Numbers with both integer and fractional parts are often used in computers because many important algorithms make use of them, like signal and image processing for example. A good way of representing these types of numbers is with a floating-point representation. The ePUMA platform currently supports a fixed-point representation, so the goal of this thesis will be to implement twelve basic floating-point arithmetic operations and two conversion operations onto an already existing datapath, conforming as much as possible to the IEEE 754-2008 standard for floating-point representation. The implementation should be done at a low hardware and power consumption cost. The target frequency will be 500MHz. The implementation will be compared with dedicated DesignWare components and the implementation will also be compared with floating-point done in software in ePUMA. This thesis presents a solution that on average increases the VPE datapath hardware cost by 15% and the power consumption increases by 15% on average. Highest clock frequency with the solution is 473MHz. The target clock frequency of 500MHz is thus not achieved but considering the lack of register retiming in the synthesis step, 500MHz can most likely be reached with this design.
|
2 |
Implementação em FPGA de um módulo multiplicador e acumulador aritmético de alto desempenho para números em ponto flutuante de precisão dupla, padrão IEEE 754Corrêa Barros, Abner 31 January 2008 (has links)
Made available in DSpace on 2014-06-12T15:50:19Z (GMT). No. of bitstreams: 2
arquivo1633_1.pdf: 3430552 bytes, checksum: 3faeba7130f6e7c5c09f28267843f88a (MD5)
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2008 / Os FPGAs (Field Programable Gate Array) têm sido considerados como uma
opção atrativa no desenvolvimento de co-processadores de aplicação específica
para sistemas computacionais de alto desempenho. Tradicionalmente, entretanto,
estes dispositivos vinham sendo empregados apenas para implementar sistemas
que não demandassem um uso intensivo de operações aritméticas envolvendo
números em ponto flutuante. Isto acontecia principalmente devido à alta
complexidade e ao tamanho dos cores de hardware gerados e também devido a
escassez de recursos lógicos adequados a este tipo de aplicação nos FPGAs
disponíveis à época.
Os recentes avanços nesta tecnologia tem permitido a construção de novas
famílias de FPGAs, os quais além de contar com dezenas de milhões de portas
lógicas, dispõem também de recursos de hardware mais adequados à aplicações de
processamento de alto desempenho, tais como: CPUs, DSPs (Digital Signal
Processor) e grandes blocos de memória. Estes novos recursos tem permitido que
projetistas e engenheiros possam implementar com maior facilidade coprocessadores
aritméticos mais adequados a aplicações de computação científica.
Neste trabalho, serão apresentados os detalhes de construção de uma
unidade aritmética, um multiplicador e acumulador (MAC), implementado em FPGA,
o qual segue o padrão IEEE 754 para números em ponto flutuante de precisão
dupla. Esta unidade foi desenvolvida como parte de um co-processador aritmético
de aplicação específica, dedicado a multiplicação de matrizes densas, para uso em
plataformas computacionais de alto desempenho.
O padrão IEEE 754 é descrito em detalhes, bem como a arquitetura interna
da unidade aritmética implementada. Serão apresentadas também as metodologia
de desenvolvimento e teste empregadas na construção deste dispositivo
|
3 |
Desenvolvimento de uma FFT utilizando ponto flutuante para FPGAUmbelino Alves Rolim, Arthur 31 January 2009 (has links)
Made available in DSpace on 2014-06-12T15:52:14Z (GMT). No. of bitstreams: 1
license.txt: 1748 bytes, checksum: 8a4605be74aa9ea9d79846c1fba20a33 (MD5)
Previous issue date: 2009 / Conselho Nacional de Desenvolvimento Científico e Tecnológico / Devido à grande demanda da comunidade científica para o aumento da precisão em
cálculos científicos, com redução no tempo de processamento e na potência dissipada pelos
algoritmos em sua execução, estudos têm demonstrado que dispositivos especiais, como
FPGAs (Field Programmable Gate Arrays), que trabalham, em geral, como co-processadores,
podem em muito ajudar nesta linha de pesquisa. Muito já foi implementado e testado, porém a
limitação de se trabalhar com números inteiros, que possuem um intervalo reduzido de
representação numérica, imposta pela arquitetura nativa dos FPGA, incentivaram os
pesquisadores a procurarem alternativas de como aumentar a precisão na plataforma.
Esta pesquisa voltou-se para o estudo e a adaptação do padrão aritmético IEEE 754,
largamente utilizado em computadores comuns e DSPs, ambos com grande capacidade de
representação numérica, para FPGAs. Desta forma, uma adaptação mais natural dos
algoritmos já existentes, que precisam ser acelerados, seria possível com os novos recursos na
nova plataforma. Esta flexibilidade oferecida pelo novo ambiente de desenvolvimento
concebeu muitas alternativas de viabilidade do projeto, gerando assim, uma grande
quantidade de Ip-cores (uma biblioteca de cores) que realizam a mesma tarefa, entretanto de
maneiras diferentes.
Este trabalho tem como objetivo principal desenvolver o algoritmo da transformada
rápida de Fourier (FFT) em hardware, para FPGAs. Este software Ip-core, bastante utilizado
em aplicação científicas, particularmente em processamento digital de sinais, foi desenvolvido
utilizando operações aritméticas números de ponto flutuante, padrão IEEE 754, com uma boa
adaptabilidade.
No Ip-core desenvolvido todas as operações aritméticas complexas, que o algoritmo
demanda, foram encapsuladas para futuras melhoras sejam facilmente implementadas. Isto
permite que, caso algum novo core aritmético, com melhor qualidade, venha a ser
desenvolvido, o mesmo poderá facilmente substituir um core existente
|
4 |
Contributions à l'arithmétique flottante : codages et arrondi correct de fonctions algébriques / Contributions to floating-point arithmetic : Coding and correct rounding of algebraic functionsPanhaleux, Adrien 27 June 2012 (has links)
Une arithmétique sûre et efficace est un élément clé pour exécuter des calculs rapides et sûrs. Le choix du système numérique et des algorithmes arithmétiques est important. Nous présentons une nouvelle représentation des nombres, les "RN-codes", telle que tronquer un RN-code à une précision donnée est équivalent à l'arrondir au plus près. Nous donnons des algorithmes arithmétiques pour manipuler ces RN-codes et introduisons le concept de "RN-code en virgule flottante." Lors de l'implantation d'une fonction f en arithmétique flottante, si l'on veut toujours donner le nombre flottant le plus proche de f(x), il faut déterminer si f(x) est au-dessus ou en-dessous du plus proche "midpoint", un "midpoint" étant le milieu de deux nombres flottants consécutifs. Pour ce faire, le calcul est d'abord fait avec une certaine précision, et si cela ne suffit pas, le calcul est recommencé avec une précision de plus en plus grande. Ce processus ne s'arrête pas si f(x) est un midpoint. Étant donné une fonction algébrique f, soit nous montrons qu'il n'y a pas de nombres flottants x tel que f(x) est un midpoint, soit nous les caractérisons ou les énumérons. Depuis le PowerPC d'IBM, la division en binaire a été fréquemment implantée à l'aide de variantes de l'itération de Newton-Raphson dues à Peter Markstein. Cette itération est très rapide, mais il faut y apporter beaucoup de soin si l'on veut obtenir le nombre flottant le plus proche du quotient exact. Nous étudions comment fusionner efficacement les itérations de Markstein avec les itérations de Goldschmidt, plus rapides mais moins précises. Nous examinons également si ces itérations peuvent être utilisées pour l'arithmétique flottante décimale. Nous fournissons des bornes d'erreurs sûres et précises pour ces algorithmes. / Efficient and reliable computer arithmetic is a key requirement to perform fast and reliable numerical computations. The choice of the number system and the choice of the arithmetic algorithms are important. We present a new representation of numbers, the "RN-codings", such that truncating a RN-coded number to some position is equivalent to rounding it to the nearest. We give some arithmetic algorithms for manipulating RN-codings and introduce the concept of "floating-point RN-codings". When implementing a function f in floating-point arithmetic, if we wish to always return the floating-point number nearest f(x), one must be able to determine if f(x) is above or below the closest "midpoint", where a midpoint is the middle of two consecutive floating-point numbers. This determination is first done with some given precision, and if it does not suffice, we start again with higher precision, and so on. This process may not terminate if f(x) can be a midpoint. Given an algebraic function f, we try either to show that there are no floating-point numbers x such that f(x) is a midpoint, or we try to enumerate or characterize them. Since the IBM PowerPC, binary division has frequently been implemented using variants of the Newton-Raphson iteration due to Peter Markstein. This iteration is very fast, but much care is needed if we aim at always returning the floating-point number nearest the exact quotient. We investigate a way of efficiently merging Markstein iterations with faster yet less accurate iterations called Goldschmidt iterations. We also investigate whether those iterations can be used for decimal floating-point arithmetic. We provide sure and tight error bounds for these algorithms.
|
5 |
Episode 3.07 – Introduction to Floating Point Binary and IEEE 754 NotationTarnoff, David 01 January 2020 (has links)
Regardless of the numeric base, scientific notation breaks numbers into three parts: sign, mantissa, and exponent. In this episode, we discuss how the computer stores those three parts to memory, and why IEEE 754 puts them together the way it does.
|
6 |
Leveraging Posits for the Conjugate Gradient Linear Solver on an Application-Level RISC-V CoreMallasén Quintana, David January 2022 (has links)
Emerging floating-point arithmetics provide a way to optimize the execution of computationally-intensive algorithms. This is the case with scientific computational kernels such as the Conjugate Gradient (CG) linear solver. Exploring new arithmetics is of paramount importance to maximize the accuracy and timing performance of these algorithms. In this thesis, I have studied the use of the novel posit arithmetic in hardware to improve the accuracy of the CG method. In particular, on PERCIVAL, an application-level RISC-V core with support for posits and quire. The open RISC-V architecture supplies a flexible platform for the exploration of new computer architecture studies. Previous works have tackled the use of posits in the high-performance computing and machine learning fields, amongst others. However, until recently, the lack of hardware support has been a significant barrier to their scalability. The key results from this thesis show that posits are a promising alternative when solving 1D and 2D Poisson equations using the CG linear solver. Notably, this novel arithmetic can execute as fast as IEEE 754 floating-point numbers on specialized hardware, and provide up to 2 orders of magnitude higher accuracy. This accuracy improvement spans both the error of the output values of the algorithms and the value of the final residual in the CG iterative method. Furthermore, the use of the quire accumulator register in the computation of dot-products in posit arithmetic significantly boosts the accuracy of the outputs. Since 32-bit posits perform practically as fast as 32-bit floats, and thus faster than 64-bit floats, they present an intermediate solution between single- and double-precision arithmetic. This paves the way for the deployment of high-efficiency solutions that make intensive use of floating-point operations. / Ny kommande flyttalsaritmetik ger ett sätt att optimera exekveringen av beräkningsintensiva algoritmer. Detta är fallet med vetenskapliga beräkningskärnor som den Conjugate Gradient (CG) metoden kräver. Att utforska ny aritmetik är av största vikt för att minska energikostnaderna för dessa algoritmer. I detta examensarbete har jag studerat användningen av den nya positaritmetiken i hårdvara för att förbättra noggrannheten i CG-metoden. I synnerhet på PERCIVAL, en RISC-V-kärna på applikationsnivå med stöd för posits och quire. Den öppna RISC-V-arkitekturen tillhandahåller en flexibel plattform för utforskning av nya dator arkitekturstudier. Tidigare arbeten har tagit itu med användningen av positurer inom områdena högpresterande datorer och maskininlärning, bland annat. Men fram till nyligen har bristen på hårdvarustöd varit ett betydande hinder för deras skalbarhet. Nyckelresultaten från denna avhandling visar att posits är ett lovande alternativ när man löser 1D och 2D Poisson-ekvationer med den linjära CG-lösaren. Noterbart kan denna nya aritmetik köra så snabbt som IEEE 754 flyttal på specialiserad hårdvara och ge upp till två storleksordningar högre noggrannhet. Denna noggrannhetsförbättring sträcker sig över både felet i algoritmernas utvärden och värdet på den slutliga residualen i den iterativa CG-metoden. Dessutom ökar användningen av quire-ackumulatorregistret vid beräkning av punktprodukter i positaritmetik avsevärt noggrannheten hos utsignalerna. Eftersom 32-bitars posits presterar praktiskt taget lika snabbt som 32-bitars flöten, och därmed snabbare än 64-bitars flöten, presenterar de en mellanlösning mellan enkel-och dubbelprecisionsaritmetik. Detta banar väg för utbyggnaden av högeffektiva lösningar som intensivt utnyttjar flyttalsoperationer.
|
7 |
Contributions à l'arithmétique flottante : codages et arrondi correct de fonctions algébriquesPanhaleux, Adrien 27 June 2012 (has links) (PDF)
Une arithmétique sûre et efficace est un élément clé pour exécuter des calculs rapides et sûrs. Le choix du système numérique et des algorithmes arithmétiques est important. Nous présentons une nouvelle représentation des nombres, les "RN-codes", telle que tronquer un RN-code à une précision donnée est équivalent à l'arrondir au plus près. Nous donnons des algorithmes arithmétiques pour manipuler ces RN-codes et introduisons le concept de "RN-code en virgule flottante." Lors de l'implantation d'une fonction f en arithmétique flottante, si l'on veut toujours donner le nombre flottant le plus proche de f(x), il faut déterminer si f(x) est au-dessus ou en-dessous du plus proche "midpoint", un "midpoint" étant le milieu de deux nombres flottants consécutifs. Pour ce faire, le calcul est d'abord fait avec une certaine précision, et si cela ne suffit pas, le calcul est recommencé avec une précision de plus en plus grande. Ce processus ne s'arrête pas si f(x) est un midpoint. Étant donné une fonction algébrique f, soit nous montrons qu'il n'y a pas de nombres flottants x tel que f(x) est un midpoint, soit nous les caractérisons ou les énumérons. Depuis le PowerPC d'IBM, la division en binaire a été fréquemment implantée à l'aide de variantes de l'itération de Newton-Raphson dues à Peter Markstein. Cette itération est très rapide, mais il faut y apporter beaucoup de soin si l'on veut obtenir le nombre flottant le plus proche du quotient exact. Nous étudions comment fusionner efficacement les itérations de Markstein avec les itérations de Goldschmidt, plus rapides mais moins précises. Nous examinons également si ces itérations peuvent être utilisées pour l'arithmétique flottante décimale. Nous fournissons des bornes d'erreurs sûres et précises pour ces algorithmes.
|
8 |
Contributions à la vérification formelle d'algorithmes arithmétiques / Contributions to the Formal Verification of Arithmetic AlgorithmsMartin-Dorel, Erik 26 September 2012 (has links)
L'implantation en Virgule Flottante (VF) d'une fonction à valeurs réelles est réalisée avec arrondi correct si le résultat calculé est toujours égal à l'arrondi de la valeur exacte, ce qui présente de nombreux avantages. Mais pour implanter une fonction avec arrondi correct de manière fiable et efficace, il faut résoudre le «dilemme du fabricant de tables» (TMD en anglais). Deux algorithmes sophistiqués (L et SLZ) ont été conçus pour résoudre ce problème, via des calculs longs et complexes effectués par des implantations largement optimisées. D'où la motivation d'apporter des garanties fortes sur le résultat de ces pré-calculs coûteux. Dans ce but, nous utilisons l'assistant de preuves Coq. Tout d'abord nous développons une bibliothèque d'«approximation polynomiale rigoureuse», permettant de calculer un polynôme d'approximation et un intervalle bornant l'erreur d'approximation à l'intérieur de Coq. Cette formalisation est un élément clé pour valider la première étape de SLZ, ainsi que l'implantation d'une fonction mathématique en général (avec ou sans arrondi correct). Puis nous avons implanté en Coq, formellement prouvé et rendu effectif 3 vérifieurs de certificats, dont la preuve de correction dérive du lemme de Hensel que nous avons formalisé dans les cas univarié et bivarié. En particulier, notre «vérifieur ISValP» est un composant clé pour la certification formelle des résultats générés par SLZ. Ensuite, nous nous sommes intéressés à la preuve mathématique d'algorithmes VF en «précision augmentée» pour la racine carré et la norme euclidienne en 2D. Nous donnons des bornes inférieures fines sur la plus petite distance non nulle entre sqrt(x²+y²) et un midpoint, permettant de résoudre le TMD pour cette fonction bivariée. Enfin, lorsque différentes précisions VF sont disponibles, peut survenir le phénomène de «double-arrondi», qui peut changer le comportement de petits algorithmes usuels en arithmétique. Nous avons prouvé en Coq un ensemble de théorèmes décrivant le comportement de Fast2Sum avec double-arrondis. / The Floating-Point (FP) implementation of a real-valued function is performed with correct rounding if the output is always equal to the rounding of the exact value, which has many advantages. But for implementing a function with correct rounding in a reliable and efficient manner, one has to solve the ``Table Maker's Dilemma'' (TMD). Two sophisticated algorithms (L and SLZ) have been designed to solve this problem, relying on some long and complex calculations that are performed by some heavily-optimized implementations. Hence the motivation to provide strong guarantees on these costly pre-computations. To this end, we use the Coq proof assistant. First, we develop a library of ``Rigorous Polynomial Approximation'', allowing one to compute an approximation polynomial and an interval that bounds the approximation error in Coq. This formalization is a key building block for verifying the first step of SLZ, as well as the implementation of a mathematical function in general (with or without correct rounding). Then we have implemented, formally verified and made effective 3 interrelated certificates checkers in Coq, whose correctness proof derives from Hensel's lemma that we have formalized for both univariate and bivariate cases. In particular, our ``ISValP verifier'' is a key component for formally verifying the results generated by SLZ. Then, we have focused on the mathematical proof of ``augmented-precision'' FP algorithms for the square root and the Euclidean 2D norm. We give some tight lower bounds on the minimum non-zero distance between sqrt(x²+y²) and a midpoint, allowing one to solve the TMD for this bivariate function. Finally, the ``double-rounding'' phenomenon can typically occur when several FP precision are available, and may change the behavior of some usual small FP algorithms. We have formally verified in Coq a set of results describing the behavior of the Fast2Sum algorithm with double-roundings.
|
9 |
Contributions à la vérification formelle d'algorithmes arithmétiquesMartin-Dorel, Erik 26 September 2012 (has links) (PDF)
L'implantation en Virgule Flottante (VF) d'une fonction à valeurs réelles est réalisée avec arrondi correct si le résultat calculé est toujours égal à l'arrondi de la valeur exacte, ce qui présente de nombreux avantages. Mais pour implanter une fonction avec arrondi correct de manière fiable et efficace, il faut résoudre le "dilemme du fabricant de tables" (TMD en anglais). Deux algorithmes sophistiqués (L et SLZ) ont été conçus pour résoudre ce problème, via des calculs longs et complexes effectués par des implantations largement optimisées. D'où la motivation d'apporter des garanties fortes sur le résultat de ces pré-calculs coûteux. Dans ce but, nous utilisons l'assistant de preuves Coq. Tout d'abord nous développons une bibliothèque d'"approximation polynomiale rigoureuse", permettant de calculer un polynôme d'approximation et un intervalle bornant l'erreur d'approximation à l'intérieur de Coq. Cette formalisation est un élément clé pour valider la première étape de SLZ, ainsi que l'implantation d'une fonction mathématique en général (avec ou sans arrondi correct). Puis nous avons implanté en Coq, formellement prouvé et rendu effectif 3 vérifieurs de certificats, dont la preuve de correction dérive du lemme de Hensel que nous avons formalisé dans les cas univarié et bivarié. En particulier, notre "vérifieur ISValP" est un composant clé pour la certification formelle des résultats générés par SLZ. Ensuite, nous nous sommes intéressés à la preuve mathématique d'algorithmes VF en "précision augmentée" pour la racine carré et la norme euclidienne en 2D. Nous donnons des bornes inférieures fines sur la plus petite distance non nulle entre sqrt(x²+y²) et un midpoint, permettant de résoudre le TMD pour cette fonction bivariée. Enfin, lorsque différentes précisions VF sont disponibles, peut survenir le phénomène de "double-arrondi", qui peut changer le comportement de petits algorithmes usuels en arithmétique. Nous avons prouvé en Coq un ensemble de théorèmes décrivant le comportement de Fast2Sum avec double-arrondis.
|
Page generated in 0.026 seconds