FPU Unidade de ponto flutuante

Faz cálculos aritméticos com números fracionários usando notação científica, economizando mais bits. Também chamado de vírgula flutuante.

Categoria de Tecnologia

Postado em 15 março 2023

Atualizado em 15 março 2023

Palavras-chave: fpu,cpu,agu,computador,componente,calculo,matematica,notacao,cientifica

Visualizações: 2126



Em meados dos anos 80, os processadores ainda enfrentavam desafios para realizar cálculos de aritmética com números que possuem vírgula. Nessa época, a unidade de ponto flutuante (FPU) era um componente opcional e separado do processador. Computadores que possuíam um FPU, passavam a ser chamados de computadores científicos.

Mesmo sem a presença de um FPU, os computadores ainda podem realizar cálculos de aritmética de números com vírgula. Usando softwares que simulam o funcionamento do FPU, instruções podem ser implementadas em nível de linguagem de programação. Porém, a velocidade do cálculo não é tão veloz e o resultado final não é muito preciso. Por essa razão, ter um componente em nível de hardware especializado em cálculos aritméticos de números com vírgula é essencial para a máquina ter um bom desempenho. Hoje, raramente existem computadores sem uma FPU integrada ao processador.

O que é a unidade de ponto flutuante (FPU)?

A unidade de ponto flutuante (FPU), em inglês “floating-point unit”, é um componente hardware especializado em realizar cálculos de números com vírgula. Esse componente começou a ser usado em computadores residenciais no ano de 1989, após o lançamento do Intel i486. Como referenciado no livro GAME ENGINE BLACK BOOK DOOM, a ausência da unidade de ponto flutuante era um grande problema para os computadores da época. Jogos como o DOOM, usavam a aritmética de ponto fixo para calcular a distância aproximada entre dois pontos.

O Intel i486 foi um marco importante no mercado de computadores pessoais, processadores passaram a calcular com mais precisão graças ao FP (floating-point), o que permitiu que cálculos de terceira dimensão (3D) pudessem ser realizados, contribuindo para o desenvolvimento de jogos e aplicativos inovadores na época.

Pelo fato da máquina trabalhar com a numeração binária, a representação dos números decimais acompanhados com vírgula apresenta problemas como falta de bits (número de dígitos não é suficiente). Por isso, a representação adotada pelos computadores é a notação científica.

notação científica e ponto flutuante

Como funciona o ponto flutuante?

Os computadores usam a notação científica para representar a posição da vírgula em um valor. Esse valor, em decimal pode ser processado usando o seguinte modelo:
m10e m * 10^e

  • Mantissa (m)
  • Base (10)
  • Expoente (e)

Assim, tendo um valor mais preciso e aproveitando melhor o uso dos bits.

A aplicação do modelo acima, pode ser realizado da seguinte maneira: Imagine que temos o valor decimal abaixo e queremos processar essa informação.

  • 5.000.000.000

O valor acima é de 5 bilhões. Usando a notação científica, podemos mudar a expressão.

  • 51095 * 10^9

Repare como é mais fácil de manipular o número acima usando notação científica. O valor foi divido em três elementos: mantissa (5), base (10) e expoente (9). Também é possível aplicar em números abaixo de zero:

  • 0,000123 = 1,231041,23 * 10^{-4}

Levando em consideração que os valores são gravados e processados em bits, diminuir o número de dígitos sem modificar o valor ajuda a economizar espaço. Os valores podem ser processados usando o formato float ou double, cujos formatos respectivamente podem representar o valor com 32 bits ou 64 bits. Como mostrado no exemplo acima, o computador normaliza o valor da mantissa do valor fracionário, deslocando a vírgula para a direção direita quando positivo e para esquerda quando negativo. Quando o número é menor do que zero, ele tem o expoente negativo e quando é maior do que dez, o expoente é positivo.

Ponto flutuante com número binários

Diferente dos humanos, a máquina processa as informações usando números binários. Por essa razão os cálculos devem ser realizados usando binários.

Imagine o seguinte valor de 43,167.

Para calcular o valor acima usando números binários, primeiro temos que segmentar o número antes da vírgula e transforma-lo em binário. Lembrando que para converter um número decimal em binário, temos que dividir essa número até ele chegar a zero e memorizar a sobra em cada divisão.

  • 43 / 2 = 21 (1)
  • 21 / 2 = 10 (1)
  • 10 / 2 = 5 (0)
  • 5 / 2 = 2 (1)
  • 2 / 2 = 1 (0)
  • 1 / 2 = 0 (1)

Na ordem de baixo para cima, juntamos os zeros e uns para ter o resultado final do número binário que é 101011. Em seguida, convertemos o valor após a vírgula em número binário, mas diferente da resolução acima, os números depois da vírgula serão multiplicados por 2 e serão marcados como sobra caso ultrapassem o 1.

  • 167 * 2 = 334 (0)
  • 334 * 2 = 668 (0)
  • 668 * 2 = 1,336 (1)
  • 336 * 2 = 672 (0)
  • 672 * 2 = 1,344 (1)

Quando um dos valores se repetem, podemos parar a multiplicação. Diferente dos números antes da vírgula, os números depois da vírgula tem as suas sobras juntadas de cima para baixo: 00101.

No final temos um valor binário de 101011,001012101011,00101_2.

Em seguida precisamos aplicar a notação científica no resultado. Normalizamos a mantissa do valor deslocando a vírgula para a esquerda 5 casas e escrevemos o expoente:

  • 1,0101100101251,0101100101 * 2^5

O resultado acima, em um formato float de 32 bits terá os seguintes aspectos:

  • 1 bit para indicar o sinal do expoente
  • 8 bits para indicar o valor do expoente
  • 23 bits para a fração normalizada

ponto flutuante

Conclusão

A unidade de ponto flutuante é um componente capaz de fazer cálculos aritméticos usando a notação científica. A vírgula flutuante permite que a máquina possa obter resultados mais precisos, possibilitando o desenvolvimento de aplicativos e jogos que necessitam de precisão e eficiência no processamento de números complexos.

Projetos práticos

Criando um sistema de mini garagem automatizada integrada com um sistema de monitoramento independente

Desenvolvimento de um sistema de monitoramento que exibi todos os eventos que acontecem na garagem automatizada, como abertura de portões ou ocupação de vagas.

Implementando um algoritmo de pathfinding

Implementando um programa que encontra a menor distância entre dois pontos dentro de um labirinto usando o algoritmo A* (a-estrela).

Criando artes de texto usando imagens

Convertendo imagens para ascii art usando o valor da intensidade das cores cinzentas.

Criando um jogo de pacman usando javascript e pixi.js (parte 1)

Desenvolvimento dos conceitos mais básicos do clássico pacman, como: mapa, animação, deslocamento e detector de colisões.

Criando um sistema de integração contínua (CI/CD)

Fazendo a integração contínua de Jenkins, Sonatype Nexus, Sonatype, JUnit e Gradle para automatizar processos repetitivos. Prática bastante usada em tecnologias de DevOps.

Veja também

A maioria dos sistemas atuais usam a nuvem para o armazenamento e o acesso de dados

A nuvem pode ser uma boa alternativa de substituição da memória atual. Além de fazer a cópia de segurança dos dados, pode ser acessível de qualquer lugar.

O endereçamento de dispositivos na internet é automatizado graças ao DHCP

Antigamente o endereçamento de dispositivos era feito manualmente, porém isso traz muitas dificuldades em questão de administração. O DHCP resolve esses problemas

Ciência de dados

Data Science ou ciência de dados, é uma área de computação que se concentra em extrair informações valiosas de grandes quantidades de dados.

Algoritmo A* (A-estrela)

Algoritmo que busca o caminho com o menor custo entre dois pontos. É usado em jogos e aplicativos de navegação para calcular a menor distância possível.

Memória de computador

O computador possui memória primária e memória auxiliar, ambos possuem finalidades específicas como armazenamento de dados temporários ou permanentes.

IaaS (Infrastructure as a Service)

Computador virtual. Fornece infraestrutura de computação básica distribuída em vários locais, oferecendo mais flexibilidade e escalabilidade.