Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores Material Teórico Responsável pelo Conteúdo: Prof. Ms. Fábio Peppe Beraldo Revisão Textual: Profa. Esp. Márcia Ota Interrupção e Projeto de CPU • Conceitos Matemáticos da Computação • Realizando Cálculos com Números Negativos • Números de Ponto Flutuante • Aritmética de Números de Ponto Flutuante • Simulador · O objetivo dessa unidade é capacitar o aluno a realizar a aritmética computacional buscando o melhor desempenho do processador. OBJETIVO DE APRENDIZADO Nesta Unidade, vamos aprender um pouco mais sobre os conceitos de aritmética computacional importantes para a efetividade da programação e do funcionamento do hardware também. Leia o material com atenção e, se sentir necessidade, releia para que sua absorção seja adequada. Fique atento(a) nessa etapa, pois é o momento oportuno para registrar suas dúvidas; por isso, não deixe de registrá-las e transmiti-las ao professor-tutor. Além disso, para que a sua aprendizagem ocorra num ambiente mais intera- tivo possível, na pasta de atividades, você também encontrará as atividades de avaliação, uma atividade reflexiva e a videoaula. Cada material disponi- bilizado é mais um elemento para seu aprendizado, por favor, estude todos com atenção! ORIENTAÇÕES Interrupção e Projeto de CPU UNIDADE Interrupção e Projeto de CPU Contextualização Para entendermos, perfeitamente, o raciocínio lógico da CPU, devemos nos aprofundar em como a ULA trabalha, ou seja, devemos entender como ela realiza seus cálculos aritméticos. Para tanto, teremos de estudar as funções lógicas da ULA e a implementação aritmética dessas funções. Um dos pontos mais importantes a se lembrar do material já estudado: a aritmética computacional trabalha com dois tipos de números: números inteiros e números de ponto flutuante. Portanto, qual escolher para trabalhar é de supra importância para o funcionamento otimizado do programa. Nesta unidade da disciplina, veremos como esses cálculos são feitos, variando o tipo de função entre as duas formas de numeração e, dessa forma, você será capaz de definir qual a melhor opção para seus programas. 6 7 Conceitos Matemáticos da Computação Se vamos falar de matemática ou aritmética no computador, com certeza, vamos falar da ULA, uma vez que ela é responsável por toda a execução de cálculos da máquina, como o próprio nome diz, Unidade Lógica e Aritmética, ou seja, a unidade responsável pelos cálculos aritméticos. Todos os outros elementos de hardware, e até alguns de software, possuem uma única função: trazer dados para a ULA interpretar e aguardar os resultados dela. Mesmo a ULA é constituída de dispositivos que são capazes de fazer cálculos com dígitos binários baseados na lógica booleana. A ULA conecta-se com os demais componentes do computador via barramentos que a ligam aos registradores que armazenam resultados preliminares de operações de algumas instruções. Outra ação da ULA é gerar flags (bits especiais) para indicar o resultado de uma operação. Assim, a Unidade de Controle UC avalia o trabalho da ULA e o processamento prossegue. Vimos, que o sistema de números binários possibilita a representação de nú- meros, usando os dígitos 0 e 1, a simbologia da subtração ou representação negativa pelo traço ( - ) e a representação decimal pela virgula ( , ). Porém, a re- presentação decimal, subtração e negativa são simbologias humanas; no compu- tador não teria como processar tais representações de caracteres, apenas dígitos 0 e 1 podem ser usados. Para números inteiros e não negativos, isso não é um problema, podendo ser representados pelo byte, que é um conjunto de 8bits, como por exemplo: • 00101001 = 41 • 10000000 = 128 Para nosso estudo, podemos representar uma sequência (n) de dígitos binários (an–1 an–2 ... a1 a0) de números inteiros não negativos (A) pela equação: A a i n i i= × = − ∑ 0 1 2 Para auxiliar a leitura do código binário de números não negativos, algumas regras foram criadas, utilizando a representação do sinal-magnitude que trabalha com o bit mais significativo da palavra (identificado pelo bit mais à esquerda do valor binário ou o primeiro bit da esquerda do byte) da seguinte forma; se esse bit for 0, significa um valor numérico positivo, se esse bit for 1, significa um valor numérico negativo. Da seguinte forma: • + 41 = 00101001 • – 41 = 10101001 (sinal-magnitude) 7 UNIDADE Interrupção e Projeto de CPU A representação do sinal-magnitude possui, porém, algumas desvantagens, tais como o trabalho de se considerar tanto a magnitude quanto o sinal de cada operando envolvido em uma operação aritmética, o que aumenta o trabalho da ULA, e a dupla representação do valor zero que pode ser positivo ou negativo; nesse ponto, por exemplo, atrapalharia a identificação de alguns bits especiais de reconhecimento de atividade como flag da ULA, recém-discutido. Veja o exemplo: • + 0 = 00000000 • – 0 = 10000000 (sinal-magnitude) Para corrigir as dificuldades que a técnica de sinal-magnitude implementava, foi criada uma nova regra: a representação em complemento de dois. Nessa representação, ainda é usado o bit mais significativo como identificador de sinal do valor numérico, mas diferente da representação de sinal-magnitude, os demais bits à direita são representados de formas diferenciadas à necessidade, conforme a tabela 1. Tabela 1 – Características da representação e aritmética em complemento de dois Faixa de valores representáveis -2 a2 - 1(n-1) (n-1) Número de representações para zero 1 Negação Pegue o complemento booleano de cada bit do número positivo correspondente e, então, some 1 ao padrão de bits resultante, tratado como um número inteiro sem sinal. Expansão do número de bits Acrescente posições de bit à esquerda e preencha esses bits com o valor do bit de sinal original. Regra de overflow Se dois números com mesmo sinal (ambos positivos ou ambos negativos) forem somados, ocorrerá overflow, apenas se o resultado tiver sinal oposto. Regra de subtração Para subtrair B de A, pegue o complemento de dois de B e some-o com A. Fonte: Stallings, W., Arquitetura e Organização de Computadores No entanto, mesmo com essa modificação, a representação por complemento de dois ainda não comprovou sua eficácia verdadeiramente; logo, houve alguns melhoramentos em seu funcionamento, como a definição pela soma ponderada de bits. Mas como funciona? Se pegarmos como exemplo um valor positivo inteiro P de (n) bits na representação em complemento de dois, o bit significativo será zero (an–1 = 0) e os bits de magnitude irão obedecer a equação: P a ���� �P i n i i= × ≥ = − ∑ 0 2 2 0para 8 9 Mas se P for um número negativo o bit significativo será um (an–1 = 1) e os bits de magnitude poderão representar até 2n–1 valores. Dessa forma, tem-se uma faixa de números negativos possíveis de –1 a –2n–1. Utilizando um bit de sinal as propriedades aritméticas desejadas são obtidas, por convenção, uma vez que o valor do número é calculado a partir da sua representação, multiplicando o bit mais significativo por –2n–1, gerando, então, a equação para complemento de dois que representa valores positivos e negativos. P a an n i n i i= − × + × − − = − ∑2 21 1 0 2 Para tentar facilitar a compreensão da equação, é apresentada uma representação geométrica. Começando de qualquer número, pode-se somar (sentido horário) ou subtrair (sentido anti-horário) um valor K, movendo K posições, e se essa movimentação cruzar o ponto, em que as extremidades se juntam, a resposta obtida é incorreta. 0 0000 1111 1110 1101 1100 1011 1010 1001 1000 0 (a) Números de 4 bits (b) Números de n bits -1-2-3-4-5-6-7-8-9 1 2 3 4 5 6 7 8 9 0111 0110 0101 0100 0011 0010 0001 -1 -2 -3 -4 -5 -6 -7 -8 +7 +6 +5 +4 +3 +2 +1 Subtração de números positivos Adição de números positivos 0 000...0 111...1 110...0 100...0 -8 7 011...1 0100 -1 -4 -8 +7 +4 Subtração de números positivos Adição de númerospositivos Figura 1 – Representação geométrica dos números inteiros em complemento de dois Fonte: Stallings, W., Arquitetura e Organização de Computadores Conversão entre representações com números de bits diferentes Uma coisa comum e importante de se saber fazer é converter a representação de n bits para m bits, onde m > n. Na representação por sinal-magnitude, isso é relativamente fácil de se fazer, pois basta mover o bit de sinal para a posição mais à esquerda e preencher as demais posições liberadas com valores zero. • + 18 = 00010010 (sinal-magnitude, 8 bits) • + 18 = 0000000000010010 (sinal-magnitude, 16 bits) • – 18 = 10010010 (sinal-magnitude, 8 bits) • – 18 = 1000000000010010 (sinal-magnitude, 16 bits) 9 UNIDADE Interrupção e Projeto de CPU Infelizmente, na representação por complemento, essa simples tática não vai funcionar para números inteiros negativos representados em complementos de dois, como mostrado a seguir: • + 18 = 00010010 (sinal-magnitude, 8 bits) • + 18 = 0000000000010010 (sinal-magnitude, 16 bits) • – 18 = 10010010 (sinal-magnitude, 8 bits) • – 32.658 = 1000000001101110 (sinal-magnitude, 16 bits) Para corrigir essa falha é simples, basta mover o bit de sinal para a posição mais à esquerda, método convencional e preencher os novos valores com o bit 1, ao invés do bit 0, como no método convencional, ficando da seguinte forma: • – 18 = 10010010 (sinal-magnitude, 8 bits) • – 18 = 1111111110010010 (sinal-magnitude, 16 bits) Realizando Cálculos com Números Negativos A negativa ou negação Para representar a negativa ou a negar um número, ou ainda inverter um número, basta inverter o valor de cada bit desse número (1 → 0 e 0 → 1), somando 1 ao resultado final. (complemento de dois) 00010010 = +18 (complememento bit a bit) 11101101 (adição do bit 1) + 1 11101110 = –18 Apesar de sua facilidade de trabalho, a negação possui alguns problemas, um deles é quando o valor a ser invertido for o 0. Nesse caso, a soma irá estourar os 8 bits e esse bit a mais deverá ser descartado, mantendo, assim, o mesmo valor binário para o + 0 e o – 0. Veja o exemplo: (complemento de dois) 00000000 = 0 (complememento bit a bit) 11111111 (adição do bit 1) + 1 ((descarte do valor além dos 8bits)) 100000000 = 0 00000000 = 0 10 11 O segundo problema possui um nível impossível de se resolver na representação por complemento de dois. Se pegarmos um valor que inicia com bit 1 e tem n–1 bits = 0, teremos como resposta o mesmo número inicial. Isso acabou por criar uma regra, em que se identifica a quantidade de valores passível de se inverter pelo número de representações para o valor 0. Se tiver duas representações para o 0, está se usando a representação por sinal- magnitude e o número de inversões possíveis será sempre igual. Se o número 0 tiver apenas uma representação, está sendo usada a represen- tação por complemento de dois e os números passíveis de inversão não serão iguais, havendo limitações. A seguir, veja o exemplo dessa limitação do comple- mento de dois: (complemento de dois) 10000000 = –128 (complememento bit a bit) 01111111 (adição do bit 1) + 1 ((descarte do valor além dos 8bits)) 10000000 = –128 Adição e subtração Quando estamos efetuando uma adição, muitas vezes, estoura o tamanho da palavra, o que chamamos de overflow (isso ocorre porque 0+0=0; 0+1=1; 1+0=1; 1+1=0 vai 1 para a esquerda ou próximo valor). Uma vez que isso ocorra, a ULA sinaliza o overflow para que o valor que estourou a palavra seja descartado. Como regra de identificação temos que, para a soma de valores positivos ou negativos com resultado oposto, haverá overflow. Para a subtração, é utilizada a negação para inverter o valor que será subtraído (subtraendo) do valor principal (minuendo), como no exemplo a seguir: Exemplo 1: 0010 1001 1011 + onde: • 0010 = + 2 = minuendo • 0111 = + 7 = subtraendo • 1001 = – 7 = negação do subtraendo • 1011 = – 5 = resultado 11 UNIDADE Interrupção e Projeto de CPU Exemplo 2: 1010 1100 0110 0110 + 1 onde: • 1010 = – 6 = minuendo • 0100 = + 4 = subtraendo • 1100 = – 4 = negação do subtraendo • 10110 = – 10 = overflow • 0110 = – 10 = resultado Multiplicação A multiplicação é, consideravelmente, mais complicada que as demais operações; por isso, vamos falar de cada tipo separadamente. Primeiramente, vamos multiplicar números intei- ros sem sinal, ou seja, valores positivos. Como na multiplicação feita à mão, você deve multiplicar cada fator no número “multiplicando” por cada fator do “multiplicador” (quando o bit do multiplicador é 0, o produto parcial é 0 e quando é 1, o produto parcial é o próprio multiplicando) e depois somar cada subpro- duto para obter o produto resultante, como descrito na equação a seguir: 1001 1101 1011 0000 1011 1011 10001111 × Uma forma diferente de calcular a multiplicação de dois valores começa com o acúmulo do subproduto, o que retira a soma posterior, eliminando passos e economizando memória da ULA. A seguir, tem-se uma figura exemplificando os registradores envolvidos no processo (Q, M, A e C): Mn-1 C M0 An-1 A0 Qn-1 Q0 Somador de n bits Multiplicador Deslocamento à direita Adição Multiplicando Lógica de controle de adição e deslocamento (A) 12 13 C A Q M Valores iniciais 0 0000 1101 1011 Adição Primeiro 0 1011 1101 1011 Deslocamento Ciclo 0 0101 1110 1011 Deslocamento Segundo 0 0010 1111 1011 Ciclo 0 1101 1111 1011 Adição Terceiro 0 0110 1111 1011 Deslocamento Ciclo 1 0001 1111 1011 Adição Quarto 0 1000 1111 1011 Deslocamento Ciclo Figura 2 – Implementação do hardware de multiplicação de números binários positivos (A)=Diagrama de blocos; (B)=Ciclo de cálculo do produto Fonte: Stallings, W., Arquitetura e Organização de Computadores Esse hardware de multiplicação funciona da seguinte forma: a ULA lê os bits do multiplicador, um de cada vez. Se Q0 for 1, o multiplicador será adicionado ao registrador A e o resultado, armazenado nesse registrador, sendo o bit C usado para indicar a ocorrência de overflow. Após o overflow, todos os bits dos registradores C, A e Q são deslocados um bit para a direita, de modo que o bit C vá para An–1, A0 vá para Qn–1 e Q0 seja perdido. Se Q0 for 0, então, nenhuma adição é efetuada, sendo feito apenas o deslocamento dos bits. Esse processo é repetido para cada bit do multiplicador original. O produto de 2n bits resultantes estará contido nos registradores A e Q. Talvez, seja mais fácil entender como funciona usando o fluxograma. Início Q0 = 1? C, A « 0 M « Multiplicando Q « Multiplicador Contador « n Deslocamento de C, A, Q Contador « Contador -1 C, A « A + M Contador = 0? FIM Não Sim Produto em A, Q Não Sim Figura 3 – Fluxograma da multiplicação de números binários sem sinal Fonte: Stallings, W., Arquitetura e Organização de Computadores 13 UNIDADE Interrupção e Projeto de CPU A próxima multiplicação existente é a de números em complemento de dois. Nessa multiplicação, o método anterior não funciona quando os valores forem negativos. Para que funcione corretamente a multiplicação de um número binário por 2n, deve ser feito o deslocamento no valor n bit para a esquerda, além do uso de um novo algoritmo chamado Booth que funcionará como multiplicador. Como antes, multiplicador e multiplicando são armazenados nos registradores Q e M, respectivamente. Existe também um registrador de 1 bit, posicionado logicamente à direita do bit menos significativo (Q0) do registrador Q e designado como Q–1. O resultado da multiplicação é dado nos registradores A e Q e, então, A e Q–1 são inicializadoscom valor 0. A lógica de controle examina os bits do multiplicador, um de cada vez, bem como também é examinado o bit à sua direita. Se esses dois bits forem iguais (1-1 ou 0-0), então, todos os bits dos registradores A, Q e Q–1 serão deslocados 1 bit para a direita. Se eles forem diferentes, o multiplicando será somado ou subtraído do registrador A, dependendo se os dois bits são 0-1 ou 1-0, respectivamente. Após essa operação de adição ou subtração, ocorre o deslocamento de um bit para a direita, que é feito de tal maneira que o bit mais à esquerda de A, denominado An–1, é deslocado para Na–2, mas também permanece em An–1. Isso é necessário para preservar o sinal do número armazenado em A e Q. Esse deslocamento é conhecido como deslocamento aritmético, porque preserva o bit de sinal. Início Q0, Q-1 A « 0, Q-1 « 0 M « Multiplicando Q « Multiplicador Contador « n Deslocamento aritmético para a direito: A, Q0, Q-1 Contador « Contador -1 A « A + MA « A - M Contador = 0? FIM Não Sim Produto em A, Q = 10 = 01 = 11 = 00 14 15 (B) A Q Q–1 M 0000 0011 0 0111 Valores Iniciais 1001 0011 0 0111 A ← A – M Primeiro 1100 1001 1 0111 Deslocamento Ciclo 1110 0100 1 0111 Deslocamento Segundo Ciclo 0101 0100 1 0111 A ← A + M Terceiro 0010 1010 0 0111 Deslocamento Ciclo 0001 0101 0 0111 Deslocamento Quarto Ciclo Figura 4 – Implementação do hardware de multiplicação de números binários positivos (A)= Algoritmo de Booth; (B)=Ciclo de cálculo do produto com Booth Fonte:Stallings, W., Arquitetura e Organização de Computadores Divisão A divisão é ainda mais complexa que a multiplicação. Mais à frente, há uma descrição em fluxograma, onde o divisor é colocado no registrador M e o dividendo, no registrador Q, cada fase desloca os registradores um bit para a esquerda e M é subtraído de A, para determinar se A divide o resto. Caso essa divisão seja possível, o valor do bit Q0 será 1, caso não seja possível o valor de Q0 será 0 e o valor de M será somado a A, para restaurar seu valor anterior. O contador, então, é decrementado e o processo é repetido por n passos. Ao final, o quociente estará no registrador Q e o resto, no registrador A. Início A < 0? A « 0 M « Divisor Q « Dividendo Contador « n Deslocar A, Q para a esquerda Contador « Contador -1 Q0 « 1 A « A + MQ0 « 1 A « A - M Contador = 0? FIM Não Sim Quociente em Q Resto em A Não Sim Figura 5 – Fluxograma da divisão de números binários sem sinal Fonte: Stallings, W., Arquitetura e Organização de Computadores 15 UNIDADE Interrupção e Projeto de CPU Números de Ponto Flutuante O ponto flutuante é utilizado para corrigir algumas deficiências das represen- tações de valores por complemento de dois, por exemplo, onde não era possível representar valores muito grandes ou frações muito pequenas. Para solucionar esse problema matematicamente, usa-se a notação científica, em que um valor como 851.000.000.000.000 pode ser representado por 8,51x1014. Isso também é possível de se fazer com valores binários utilizando três campos específicos: Sinal ( + ou - ), a (M)antissa e o (E)xpoente, já a (B)ase é a mesma para todos os números, o que elimina a necessidade de seu armazenamento. Usando uma palavra de 32 bits, temos o bit mais à esquerda como o representativo do sinal, sendo 0 para positivo e 1 para negativo. Em seguida, temos a representação do expoente, ocupando 8 bits de armazenamento, para trabalho com o expoente, usa-se um valor fixo chamado polarizador que é subtraído do valor do expoente para se obter o verdadeiro valor do expoente binário, tipicamente a polarização é representada por (2k–1–1), onde k representa o número de bits do expoente binário e, assim, o 8 bits armazenados podem conter números de 0 a 255. Como exemplo, se usarmos uma polarização de 127, os verdadeiros expoentes podem ser de –127 a +128 na base 2. O restante da palavra de 32 bits é a mantissa. Porém, para facilitar as operações com pontos flutuante, é necessário que esses números sejam normalizados, sendo esse valor polarizado expresso por: ± × ±0 1 2, �bbb� b E onde b é um dígito binário 0 ou 1. Isso implica que o bit mais à esquerda da mantissa é sempre 1. Por isso, não é necessário armazenar esse bit, pois ele é implícito. Portanto, o campo de 23 bits é usado para armazenar uma mantissa de 24 bits com valor entre 0,5 e 1,0. 8 bits Expoente PolarizadoSinal da mantissa (a) Formato Mantissa 23 bits Figura 6 – Formato típico da representação de números de ponto flutuante de 32 bits Fonte: Stallings, W., Arquitetura e Organização de Computadores Devemos nos atentar em alguns pontos da representação de ponto flutuantes da figura 6. O sinal está armazenado no primeiro bit da palavra, o primeiro bit da mantissa é 1, como deveria ser mesmo, o que o faz não ser armazenado no campo da mantissa, o valor 127 é adicionado ao expoente verdadeiro para ser armazenado no campo de expoente e, por fim, a base utilizada foi 2. 16 17 0 (A) (B) -231 231-1 Números inteiros representáveis Reta dos números 0-05 x 2127 05 x 2127 Zero Números negativos representáveis Over�ow em números negativos Números positivos representáveis Over�ow em números positivos Under�ow em números negativos Under�ow em números positivos Reta dos números (1 - 224) x 2128-(1 - 224) x 2128 Figura 7 – Fluxograma da divisão de números binários sem sinal (A)=Números inteiros em complemento de dois; (B)=Números representáveis em formato de 32 bits Fonte: Stallings, W., Arquitetura e Organização de Computadores Na figura 7, já podemos observar a faixa de números possíveis de serem representados em uma palavra de 32 bits. Na notação de complemento de dois, representam-se números inteiros de –231 a 231–1, ou simplificando, 232 números distintos. Já, no formato de ponto flutuante, a faixa pode ser: • Números negativos entre: − −( ) × − ×− −1 2 2 0 5 224 128 127 e , • Números positivos entre: 0 5 2 1 2 2127 24 128, × −( ) ×− − e Salientando alguns pontos não demonstrados na figura, temos: • Números negativos menores que − −( ) ×−1 2 224 128 , correspondendo a overflow em números negativos. • Números negativos maiores que − × −0 5 2 127, , correspondendo a underflow em números negativos. • Números positivos menores que 0 5 2 127, × − , correspondendo a underflow em números positivos. • Números positivos maiores que ( ) ,( )1 2 224 128− ×− a overflow em números positivos. Aritmética de Números de Ponto Flutuante Os cálculos com ponto flutuante são extremamente complexos e pedem um estudo mais detalhado do material complementar, mas vamos verificar os fatores de maior relevância quando trabalharmos com cálculos de ponto flutuante. 17 UNIDADE Interrupção e Projeto de CPU Podemos fazer uma representação via equação de ponto flutuante através dos seguintes valores: Operadores X X BS XE= × Y Y BS YE= × Soma X Y X B Y B ���para����X YS X Y S Y E E E E E+ = × +( ) × ≤− Subtração X Y X B Y B ���para����X YS X Y S Y E E E E E− = × −( ) × ≤− Multiplicação X Y X Y BS S X YE E× = ×( ) × + Divisão X Y X Y Bs s X YE E= × − Exemplos: Operadores X = × =0 3 10 302, Y = × =0 2 10 2003, Soma X Y+ = × +( ) × = × =−0 3 10 0 2 10 0 23 10 2302 3 3 3, , , Subtração X Y− = × −( ) × = − × = −−0 3 10 0 2 10 0 17 10 1702 3 3 3, , , Multiplicação X Y× = ×( ) × = × =+0 3 0 2 10 0 06 10 60002 3 5, , , Divisão X Y = × = × = − −0 3 0 2 10 1 5 10 0 152 3 1 , , , , 18 19 Claro que alguns problemas sempre existirão, como por exemplo: • Overflow no expoente: um expoente positivo excede o maior valor possível para um expoente. Em alguns sistemas, isso pode ser designado como +∞ ou – ∞. • Underflow no expoente: um expoente negativo é menor que o menor valor possível para um expoente. Isso significa que o número é muito pequeno para ser representado e pode ser tratado como sendo 0. • Underflow na mantissa: no processo de alinhamento das mantissas, pode ocorrer o transbordar de dígitos para da extremidadeda direita da mantissa, o que exigirá arredondamento. • Overflow na mantissa: a adição de duas mantissas de mesmo sinal pode resultar em uma sobra de bit significativo; o que pode ser corrigido com um novo alinhamento do número. A seguir, você pode verificar os fluxogramas da multiplicação e da divisão para entender melhor essas operações que são mais simples que a adição e a subtração: Multiplicação Z « 0 Subtrair polarização X = 0? Sim Sim Não Não Sim Não Não Sim Normalizar Arredondar Over�ow no expoente? Under�ow no expoente? Y = 0? Retornar Retornar Adicionar expoentes Multiplicar mantissas Reportar underflow Reportar overflow Figura 8 – Multiplicação de números de ponto fl utuante (Z ← X × Y). Fonte: Stallings, W., Arquitetura e Organização de Computadores 19 UNIDADE Interrupção e Projeto de CPU Divisão Z « 0 Adicionar polarização X = 0? Sim Z « ∞ Sim Não Não Sim Não Não Sim Normalizar Arredondar Over�ow no expoente? Under�ow no expoente? Y = 0? Retornar Retornar Subtrair expoentes Dividir mantissas Reportar underflow Reportar overflow Figura 9 – Divisão de números de ponto flutuante (Z ← X ÷ Y). Fonte: Stallings, W., Arquitetura e Organização de Computadores Simulador No material complementar, você terá links para simuladores e conversores de ponto flutuante para que veja acontecendo todos os cálculos que você estudou nessa unidade. Então, mude e teste várias opções para identificar cada fase dos cálculos, dessa forma complementando o que estudamos aqui. 20 21 Material Complementar Indicações para saber mais sobre os assuntos abordados nesta Unidade: Sites IEEE 754 Converter http://goo.gl/oHhIrj Floating Point Add/Subtract http://goo.gl/hGLQpX Decimal to Floating-Point Converter http://goo.gl/evx8Vf Vídeos Implementação do Somador de 4 bits https://goo.gl/xks6wl 21 UNIDADE Interrupção e Projeto de CPU Referências MONTEIRO, Mario A.; A Organização de Computadores; 5ª Ed.; Editora: LTC; 2012. TANENBAUM, Andrew S.; Organização Estruturada de Computadores; 5ª Ed.; Editora: Pearson Education; 2006. 22
Compartilhar