Вы находитесь на странице: 1из 28

Trabalho de Lgica de Programao

Bases Numricas Aritmtica da Computao Ciclo de instruo

1 Semestre de Manuteno Industrial 2011

Prof Edegar Alunos:


Carlos Eduardo Marques Debora Yukie Aoki Ewerton Fabiano Ruaz Francisco Silva Marcelo Oliveira Luz Rodrigo Hubner

1. Circuitos Lgicos / Circuitos Digitais Os circuitos digitais so projetados para produzir tenso de sada que se encontrem dentro das faixas de tenso determinadas para o nvel 0 e 1. Isso significa dizer que o circuito digital respondera da mesma maneira para tenso de entrada que se encontrem dentro da faixa permitida para o nvel 0 e que no far distino entre tenso de entrada que estejam dentro da faixa permitida para o nvel 1. O modo como um circuito digital responde a uma entrada denominado lgica do circuito. Por essa razo , os circuitos digitais so tambm chamados de circuitos lgicos. 1.1 Circuitos Integrados Digitais Quase todos os circuitos digitais usados nos modernos sistemas so circuitos integrados (CIs). A disponibilidade de uma grande variedade de CIs lgicos tem tornado possvel a implementao de sistemas digitais complexos que so menores e mais seguros que os mesmo circuitos implementados com componentes discretos. Varias tecnologias de fabricao de circuitos integrados so usadas para a produo de CIs digitais, sendo TTL, CMOS e ECL, so as mais comuns. Por exemplo TTL (transistor-transistor logic Lgica de transistor transistor) usa o transistor bipolar . CMOS (complementary metal oxide semicontuctor Metal oxido- semicontudor complementar). 1.2 Transmisses Paralela e Serial Uma das operaes mais comuns que ocorre em qualquer sistema digital a transmisso da informao de um lugar para outro. A informao pode ser transmitida a uma distancia to pequena quanto a de alguns centmetro em uma mesma placa ou a quilmetros entre operador e terminal. A informao transmitida em formato binrio, e geralmente, representado por tenses na sada de um circuito transmissor que est conectado a entrada de um circuito receptor. Exemplo, computador e impressora. A transmisso entre eles usa um porto paralelo (LPT1) do computador. A transmisso serial usa um porto serial COM de um computador para enviar dados para um modem, ou quando usa um USB. A principal relao entre as representaes paralela e serial diz a respeito a velocidade x a simplicidade do circuito . A transmisso de um dado binrio de um ponto para outro de um sistema digital pode ser feita mais rapidamente por meio do formato paralelo, pois todos os bits so transferido simultaneamente, enquanto no formato serial transferido um bit de cada vez.
2

1.3 Memria Os dispositivos e circuitos de memria desempenham um papel importante nos sistemas digitais porque provem um meio de armazenamento, temporrio ou permanente, de nmeros binrios, com a capacidade de alterao a qual quer momento. 1.4 Computadores Digitais Todos os computadores so construdos com as mesma unidades bsicas (unidade de entrada, de memria, de controle, de lgica /aritmtica, de unidade de sada e outros sistemas). Unidade de entrada: Por meio desta unidade, um conjunto de dados introduzido na unidade de memria do sistema computacional para ser armazenado at o momento d ser armazenado. Unidade de memria: A memria armazena as instrues e os dados recebidos da unidade de entrada. Unidade de controle: Esta unidade busca de cada vez, as instrues na unidade de memria e as interpreta ento os sinais apropriados a ser executados. Unidade de lgica / aritmtica: todos os clculos aritmticos e decises so processados nesta unidade. Unidade de sada: Essa unidade recebe os dados da unidade de memria e imprime,exibe ou apresenta de qualquer outra maneira as informaes ao operador. CPU: Unidade central de processamento que contem todo o circuito para a busca e a decodificao de instrues e tambm para o controle e a realizao de varias operaes determinadas.

2. Base Numrica A base o nmero de smbolos diferentes, ou algarismos, necessrios para representar um nmero qualquer, dos infinitos possveis no sistema. Por exemplo, o sistema decimal, utilizado hoje de forma universal, utiliza dez smbolos diferentes ou dgitos para representar um nmero e , portanto, um sistema numrico na base 10. 2.1 Representaes Numricas Basicamente existem duas formas de representaes de quantidade: 2.1.1 Analgica: Quando uma quantidade representada por um indicador proporcional continuamente varivel. Ex.: Velocmetro do automvel em que a deflexo do ponteiro proporcional a sua velocidade. 2.1.2 Digital: Quando as quantidades proporcionais so representadas por dgitos. Ex.: Relgio digital De modo geral pode-se definir Analgica = continua Digital = discreta (passo a passo) 2.2 Sistema Digital

o mais conhecido composto de dez nmeros ou smbolos esses smbolos so 0,1,2,3,4,5,6,7,8, e 9; usando esses smbolos podemos expressar qualquer quantidade. O sistema decimal um sistema de valor posicional no qual o valor de cada digito depende de sua posio no nmero. Ex.: 453 sabemos que o 4 representa 4 centenas, o 5 representa 5 dezenas e o 3 representa 3 unidades. Em geral, qualquer nmero simplesmente uma soma de produtos do valor de cada digito pelo seu valor posicional (peso).

Ex: Valores posicionais 10 10 10 10 10 - 10- 10- (pesos) 2 MSD digito mais significativo 2.3 Contagem Digital Uma caracterstica do sistema decimal , que usando apenas duas posies decimais 10 = 100, podemos contar 100 nmeros diferentes de (0 a 99) e assim por diante. importante notar que, na contagem decimal, a posio das unidades (LSD) varia de modo crescente a cada passo na contagem, a posio das dezenas varia de modo crescente a cada 10 passos na contagem a posio das centenas varia de modo crescente a cada 100 passos na contagem e assim por diante. 2.4 Introduo ao sistema Binrio O sistema de numerao binria o mais importante sistema de numerao em sistemas digitais, mas h alguns outros tambm importantes. O sistema decimal importante porque universalmente usado para representar quantidades fora do sistema digital. Isso significa que ocorrem situaes em que os valores decimais tm de ser convertidos para valores binrios antes de entrarem em um sistema digital. Por exemplo, quando se digita em um nmero decimal em uma calculadora (ou computador), o circuito interno dessas mquinas converte o nmero decimal em um valor binrio. 2.5 Sistema Binrio No sistema binrio h apenas dois smbolos ou valores possveis para os dgitos: 0 e 1 esse sistema de base 2 tambm pode ser usado para representar qualquer quantidade que possa ser representada em decimal ou em qualquer outro sistema de numerao. Entretanto comum que o sistema binrio use um nmero maior de dgito para expressar um determinado valor. 7 4 1 4 LSD digito menos significativo

5 , 2

O sistema binrio tambm um sistema de valor posicional, em que cada digito binrio tem um valor prprio, ou peso, expresso como uma potncia de 2. O nmero 1011,101 para encontrar seu equivalente no sistema decimal, basta somar os produtos do valor de cada digito (0 ou 1) pelo seu respectivo valor posicional (peso). Ex.: 2 2 2 2 2- 2- 2- valores posicionais (peso) 1 MSB bit mais significativo 10111,10 2 0 1 0 1 LSB bit menos significativo

1 , 1

=(1 x 2) + (0 x 2) +(1 x 2) + (1 x 2) + (1 x 2-) + (0 x 2-

) + (1 x 2-) = 8 + o + 2 +1 + 0,5 + 0 + 0,125 = 11,62510 Observe que foram usados subscritos (2 e 10) para indicar a base na qual o nmero em questo expresso. No sistema binrio o termo digito binrio (binary digit) quase sempre abreviado com o uso do termo bit. 2.6 Contagem Binria Quando operamos com nmeros binrio normalmente estamos restrito a um numero especifico de bits. Essa restrio determinada pelo circuito que usado para representar esses nmeros binrios vamos usar nmeros binrios de 4 bit para ilustrar o mtodo de contagem binria. A seqncia comea com todos os bits em 0; essa contagem denominada contagem zero. Para cada contagem sucessiva, a posio de peso unitrio (2) alterna, ou seja ela muda de um valor binrio para outro.cada vez que bit de peso unitrio muda de 1 para 0, o bit de peso 4 (2) alterna (muda de estado). Do mesmo modo, cada vez que o bit de peso 2 muda de 1 para 0, o bit de peso 8 (2) alterna. Esse mesmo processo se repetir para os bits de ordem maior, caso o numero binrio tenha mais de 4 bits.

2.6.1 Converso de Binrio para Decimal O sistema de numerao binrio um sistema posicional em que cada dgito binrio (bit) possui um certo peso. Qualquer nmero binrio pode ser convertido para seu decimal equivalente, simplesmente somando os pesos das posies em que o nmero binrio tiver um bit 1. Abaixo um exemplo: Exemplo 1: 1 24 (decimal) Exemplo 2: 1 0 1 + 25 1 + 24 0 +0 1 0 1 + 20 = 181 (decimal) 1 + 23 0 +0 1 + 21 + 1 (binrio) 20 = 16 + 8 + 2+ 1 = 27

27 + 0

+ 22 + 0

De acordo com os exemplos, o procedimento determinar os pesos (isto , as potncias de 2) para cada posio que contenha um bit 1 e, ento, somlos. 2.6.2 Converses de Decimal para Binrio Uma maneira de converter um nmero decimal em binrio utilizando divises sucessivas por 2. A converso a seguir do nmero 25, requer divises sucessivas pelo nmero decimal 2 e a escrita, de modo inverso, dos restos de cada diviso at que um quociente 0 seja obtido. Observe que o resultado binrio alcanado, escrevendo o primeiro resto como sendo o primeiro bit. Esse processo tambm representado pelo fluxograma 2.1, tambm pode ser usado para converter um nmero decimal em qualquer outro sistema de numerao. Exemplo 3: 25 1 2 12 0 2 6 0 2 3 1 2 1 1 2 0 O nmero decimal 25 em binrio 11001.

Incio

Divida por 2

Guarde o quociente (Q) e o resto (R) No Q = 0?

Sim Os Rs produzidos fornecem o nmero binrio desejado

Fim

Figura 2.1 Fluxograma do mtodo de divises sucessivas na converso de decimal (nmeros inteiros) em binrio. 2.6.3 Sistema de Numerao Hexadecimal O sistema de numerao hexadecimal usa a base 16. Assim, esta base tem smbolos possveis para os dgitos. Esse utiliza os dgitos de 0 a 9 mais as letras A, B, C, D, E, e F como os 16 smbolos. As posies dos dgitos recebem pesos como potncias de 16, como mostrado abaixo, em vez de usar as potncias de 10 como no sistema decimal. 164 163 162 161 160 A Tabela 1.1 mostra as relaes entre hexadecimal, decimal e binrio. Observe que cada dgito hexadecimal representado por um grupo de quatro dgitos binrios. Os dgitos hexa (abreviao para hexadecimal) de A at F so equivalentes aos valores decimais de 10 at 15.

Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F

Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

Binrio 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Tabela 2.1 Relao entre Hexadecimal, Decimal e Binrio. 2.6.4 Converso de hexa em decimal Um nmero hexpode ser convertido em seu equivalente decimal devido ao fato de a posio de cada dgito hexa tem um peso que uma potncia de 16. O primeiro nmero tem o peso de 16 0 , o segundo de 161 e assim por diante. Exemplo 1: 356 = 3 * 162 + 5 * 161 + 6 * 160 = 768 + 80 + 6 = 854 (decimal) Exemplo 2: 2AF = 2 * 162 + 10 * 161 + 15 * 160
9

= 512 + 160 + 15 = 687 (decimal) 2.6.5 Converso de decimal em hexadecimal Essa converso segue o mtodo da converso para binrio, ou seja, usa sucessivas divises por 16. Segue o exemplo abaixo: Exemplo 1: 423 16 7 26 10 16 1 1 16 0 423 (decimal) = 1A7 (Hexa)

2.6.6 Converso de hexa par binrio O sistema de numerao hexadecimal usado principalmente como um mtodo taqugrafo (compacto) para r epresentar um nmero binrio. Cada dgito hexa convertido no equivalente binrio de 4 bits (tabela 2.1). Segue o exemplo abaixo:

Exemplo 1: 9F2 = =

9 1001

F 1111

2 0010

= 100111110010 (binrio) 2.6.7 Converso de binrio em hexa A converso de binrio em hexa consiste, simplesmente, em fazer o inverso do processo anterior. O nmero binrio disposto em grupos de quatro bits, e cada grupo convertido no dgito hexa equivalente. Os zeros (sombreados na prxima figura) so acrescentados, quando necessrio, para completar um grupo de 4 bits. Segue o exemplo abaixo:

1110100110 (binrio) = 0011

1010

0110

= 3A16 (hexa)
10

Para realizar as converses entre hexa e binrio, necessrio conhecer os nmeros binrios de 4 bits (0000 a 1111) e seus dgitos hexa equivalentes. Uma vez que essa habilidade seja adquirida, as converses podem ser realizadas rapidamente, sem a necessidade de qualquer clculo, por isso que o sistema hexa til na representao de nmeros binrios grandes. 2.6.8 Vantagens do sistema hexa O sistema hexa costuma ser usado em sistemas digitais como uma espcie de formas compacta de representar sequncias de bits. No trabalho com computadores, sequncias binrias de at 64 bits no so incomuns. Essas sequncias binrias nem sempre representam valores numricos, porm podem ser algum tipo de cdigo que representa uma informao no numrica. Quando se manipula nmeros com uma extensa quantidade de bits, mais conveniente e menos sujeito a erros escrev-los em hexa; assim relativamente fcil realizar converses mtuas entre binrio e hexa. Para ilustrar a vantagem da representao em hexa de uma sequncia binria, suponha que exista uma lista impressa com um contedo de 50 posies de memria, tendo cada posio nmeros de 16 bits, e que tenha que ser conferidos de acordo com outra lista. Em uma situao real prefervel conferir 50 nmeros do tipo 6E67 do que 50 nmeros do tipo 0110111001100111. De qualquer modo os circuitos digitais trabalham com binrios. O sistema hexa usado simplesmente por uma questo de convenincia. 2.7 Cdigo BCD

Quando nmeros, letras ou palavras so representados por um grupo especial de smbolos, diz-se que so codificados, sendo o grupo de smbolos denominado cdigo. Provavelmente o cdigo mais familiar seja o cdigo Morse, em que um srie de pontos e traos representam letras do alfabeto. Esse cdigo usado em telegrafia (sistema de comunicao j quase em desuso). Todos os sistemas digitais usam alguma forma de numerao binria em suas operaes internas; porm, o mundo externo naturalmente decimal. Isso significa que converses entre os sistemas, decimal e binrio, so realizadas frequentemente. As converses entre decimal e binrio podem se tornar longas e complicadas para nmeros grandes, por isso, uma maneira de codificar nmeros decimais que combine algumas caractersticas dos 2 sistemas, binrio e decimal, usada em determinadas situaes. Se cada dgito de um nmero decimal for representado pelo seu equivalente em binrio, o resultado ser um cdigo denominado decimal codificado em binrio (abreviatura BCD). Como um dgito decimal pode ter no mximo o valor 9, so necessrios 4 bits para codificar cada dgito ( o cdigo binrio do 9 1001).

11

O BCD no outro sistema de numerao, como os sistemas binrio, decimal e hexadecimal. O BCD um sistema decimal no qual cada dgito codificado no seu equivalente binrio. Alm disso, um nmero BCD no o mesmo que u nmero binrio puro. O cdigo binrio puro obtido a partir do nmero decimal completo que representado em binrio; no cdigo BCD, cada dgito decimal convertido, individualmente, em binrio. Segue exemplo do nmero 137: 137 = 10001001 137 = 0001 0011 0111 (binrio) (BCD)

A principal vantagem do cdigo BCD a relativa facilidade de converso em decimal e vice-versa. Apenas os grupos de 4 bits dos dgitos de 0 a 9 precisam ser memorizados. Essa caracterstica de fcil converso especialmente importante do ponto de vista do hardware, porque nos sistemas digitais so os circuitos lgicos que realizam as converses mtuas entre BCD e decimal. Existe um cdigo chamado de cdigo Gray, no qual usado para representar um sequncia de nmeros a nica caracterstica distintiva do cdigo Gray que apenas um bit muda entre dois nmeros sucessivos na sequncia.

12

3. Aritmtica Computacional So palavras de um computado, representado por nmeros guardado na memoria conhecidos por bits, eles podem ser inteiros ou reais negativos ou positivos. Sua manipulao inclui operaes de soma, subtrao, multiplicao e diviso. O objetivo mostrar como hardware implementa a representao dos nmeros. 3.1 Nmeros com Sinal e Nmeros sem Sinal Os nmeros podem ser representados em qualquer base. Porm, a base 2 a mais adequada para os computadores porque tratam com somente dois valores 0 e 1. Estes valores so implementados facilmente atravs de circuitos eltricos. Da aritmtica temos que, em qualquer base, o valor do i-simo dgito d de um nmero dado por: d x basei, onde i comea em 0 e cresce da direita para a esquerda, de acordo com a posio ocupada pelo dgito. Por exemplo, o nmero 1011 na base dois igual a:

(1x23) + (0x22) + (1x21) + (1x20) = (1x8) + (0x4) + (1x2) + (1x0) = 8 + 0 + 2 + 1 = 11.

Portanto, os bits so numerados como 0,1,2,3,... da direita para a esquerda em uma palavra. Utilizamos a expresso bit menos significativo para designar o bit 0, e a expresso bit mais significativo para designar o bit de mais alta ordem, como por exemplo o bit 31 numa palavra de 32 bits. Como o tamanho de uma palavra manipulada por um computador tem tamanho limitado, os nmeros que podem ser representados tambm tm tamanho limitado. Se o tamanho de uma palavra igual a n bits, o maior nmero possvel de ser representado igual a 2n. Se ao realizarmos operaes sobre os nmeros, elas gerarem resultados que no podem ser representados na quantidade de bits reservados ocorre o que denominados de overflow (nmeros muito grandes) ou underflow (nmeros muito pequenos). Tanto o overflow quanto o underflow geram excees e so tratados pelo sistema operacional.

13

Os computadores manipulam tanto nmeros positivos quanto nmeros negativos, que so representados em complemento a 2. Nesta conveno os nmeros que possuem 0s esquerda so considerados positivos e os nmeros com 1s esquerda so considerados negativos. O complemento a 2 obtido invertendo-se o nmero binrio e depois somando 1 a este valor. Porm, uma regra simples para transformar um nmero binrio em sua representao em complemento a 2 a seguinte: 1) copie da direita para a esquerda todos os bits at encontrar o primeiro bit 1 inclusive e 2) inverta todos os demais bits. Um exemplo da obteno de representao em complemento a 2 de um nmero binrio com 4 dgitos. 0110 = 6 na base 10 usando a regra: 1001 (nmero binrio invertido) 0110 0110 + 0001 (soma com 1) 1010 (complemento a 2) 3.2 Representao em complemento a 2. A reapresentao em complemento a 2 tem a vantagem de representar nmeros negativos sempre com o bit 1 em sua posio mais significativa. Assim, o hardware s precisa testar este bit para verificar se o nmero positivo ou negativo. Este bit conhecido como bit de sinal. Est representada uma seqncia de nmeros binrios (8 dgitos) representados em complemento 2. 0000 0000 = 0 0000 0001 = 1 0000 0010 = 2 0000 0011 = 3 ............. 0111 1101 = 125 0111 1110 = 126 0111 1111 = 127 .............
14

1000 0001 = -127 (primeiro nmero negativo) 1000 0010 = -126 1000 0011 = -125 ............. 1111 1101 = -3 1111 1110 = -2 1111 1111 = -1 3.3 Adio e Subtrao. Numa soma os bits so somados um a um da direita para a esquerda, com os carries sendo passados para o prximo bit esquerda. A operao de subtrao usa a adio. O subtraendo simplesmente negado antes de ser somado ao minuendo. Lembre-se que a mquina trata com nmeros representados em complemento a 2. A Figura 6.4 mostra as operaes de soma (6+7) e subtrao (7-6) bit a bit entre dois nmeros representados com 4 dgitos binrios. Representao binria 7 = 0111 6 = 0110 13 = 1 1 0 1 (soma) 1 = 0 0 0 1 (subtrao) Soma 1 1 (vai um) 0111 + 0110 1101 Operaes de soma e subtrao (complemento a 2) com representao binria. Como citado anteriormente, tanto a soma como a subtrao podem gerar overflow ou underflow, se o resultado obtido no puder ser representado pela quantidade de bits que formam uma palavra. Se somarmos ou subtrairmos dois nmeros com sinais contrrios, nunca ocorrer overflow ou underflow. Isto
15

porque operandos com sinais contrrios nunca podem ser maior do que qualquer dos operandos. O overflow ocorre quando somamos dois operandos positivos e obtemos um resultado negativo, ou vice-versa. Isto significa que utilizamos o bit de sinal, gerando um carry, para armazenar um valor pertencente ao resultado da operao. Raciocnio semelhante realizado para detectar a ocorrncia do underflow numa subtrao. Neste caso, o bit de sinal tambm usado para armazenar um valor pertencente ao resultado da operao. Os projetistas de um sistema devem decidir onde tratar a ocorrncia de overflow ou de underflow em operaes aritmticas. Elas podem ser tratadas tanto por hardware quanto por software. Pode existir a deteco por hardware que gera uma exceo, e que depois tratada por software. 3.4 Operaes Lgicas Os computadores manipulam palavras, mas muito til, tambm, manipular campos de bits dentro de uma palavra ou mesmo bits individuais. O exame de caracteres individuais (8 bits) dentro de uma palavra um bom exemplo dessa necessidade. Assim, as arquiteturas de conjuntos de instrues incluem instrues para manipulao de bits. Um dos tipos de instruo utilizados so as de deslocamento de bits. As instrues podem deslocar bits tanto direita quanto esquerda. Todos os bits so movidos para o lado determinado e os bits que ficam vazios so preenchidos com 0s. Outras instrues lgicas muito teis so que implementadas na unidade lgica e aritmtica de um processador so as operaes NOT, AND, OR e XOR. A Figura 6.5 mostra as operaes lgicas, bit a bit, de deslocamento direita, esquerda, NOT, AND, OR e XOR. Desl. direita 1101 0110

Desl. esquerda 1101 1010

NOT

16

1101 0010

AND 1101 0101 0101

3.5 Construo de uma Unidade Lgica Aritmtica A unidade lgica aritmtica (ALU Arithmetic Logic Unit) o dispositivo que realiza as operaes lgicas e aritmticas, definidas pelo conjunto de instrues, dentro do processador. A ALU construda basicamente por quatro blocos bsicos de hardware: portas AND, portas OR, NOT (inversores) e multiplexadores. As implementaes de operaes lgicas so as mais simples de serem realizadas, pois elas so mapeadas diretamente com componentes do hardware. A prxima funo a ser includa a adio. Supondo que temos apenas um bit para ser somado, necessitamos de um circuito com duas entradas para os operandos, uma sada para a soma resultante, uma entrada relativa ao carry in e uma sada para o carry out. Podemos especificar as sadas soma e carry out atravs de equaes lgicas, que podem ser implementadas a partir dos blocos de hardware mencionados anteriormente. A equao lgica para gerar o bit carry out dada por: CarryOut = (b.CarryIn) + (a.CarryIn) + (a.b). E, a equao lgica para gerar o bit soma dada por: Soma = (a . b . CarryIn) + (a . b . CarryIn) + (a . b . CarryIn) + (a . b . CarryIn). Para completar o projeto de uma ALU de n bits podemos conectar n somadores de um bit. Os carry outs gerados pelos bits menos significativos da operao podem ser propagados por toda a extenso do somador, gerando um carry out no bit mais significativo do resultado da operao. Este somador denominado somador de carry propagado.
17

A operao de subtrao pode ser realizada somando-se o minuendo com a negao do subtraendo. Este efeito realizado acrescentando uma entrada complementada de b ao somador e ativando o carry in do bit menos significativo para um. O somador ento calcula: a + b + 1. Ao escolhermos a verso invertida de b obtemos: a + b + 1 = a + ( b + 1) = a + (-b) = a - b. A simplicidade do projeto do hardware de um somador para nmeros de complemento a 2 demonstra porque esta representao tornou-se um padro para operaes aritmticas inteiras em computadores. O problema com o somador de carry propagado est relacionado a velocidade de propagao do carry, que realizada seqencialmente. Num projeto de hardware a velocidade um fator crtico. Para solucionar este problema existem diversos esquemas para antecipar o carry. Porm, nestes esquemas so utilizadas mais portas lgicas o que provoca um aumento no custo. Um dos esquema para antecipar o carry denominado carry lookahead. Os somadores que utilizam o esquema de carry lookahead baseiam sua implementao em vrios nveis de abstrao. Utilizando a abreviao ci para representar o i-simo bit de carry, podemos escrever a equao do carry como: ci = (bi . ci) + (ai . ci) + (ai . bi) = (ai . bi) + (ai + bi) . ci Os termos (ai . bi) e (ai + bi) so tradicionamente chamados de gerador (gi) e propagador (pi), respectivamente. Usando estas relaes para definir ci + 1, obtemos: ci + 1 = gi + pi . ci Qualquer equao lgica pode ser implementada com uma lgica de dois nveis. Mesmo esta formulao mais simplificada pode gerar equaes muito grandes e, portanto levar a circuitos lgicos relativamente grandes e caros, dependendo do nmero de bits a serem somados. 3.6 Multiplicao Para realizar a multiplicao so necessrios dois operandos, um multiplicando e um multiplicador para gerar um operando produto. O algoritmo da multiplicao diz que os dgitos do multiplicando devem ser multiplicados pelos dgitos do multiplicador um de cada vez, da direita para a esquerda, deslocando os produtos intermedrios um dgitos esquerda em relao ao imediatamente anterior.

18

Uma observao importante que o nmero de bits do produto final (n+m) maior do que o nmero de bits do multiplicando (n) ou do multiplicador (m). Alm disso, a multiplicao tambm precisa tratar a ocorrncia de overflow. Considerando os dgitos binrios 0 e 1, temos apenas duas possibilidades de escolha, a cada passo da multiplicao: 1. coloque uma cpia do multiplicando (multiplicando x 1) no lugar apropriado, se o dgito do multiplicador for igual a 1, ou 2. coloque 0 (multiplicando x 0) no lugar apropriado, se o dgito do multiplicador for igual a 0. Assim, necessrio desenvolver um algoritmo em hardware que seja eficiente para realizar a multiplicao. Um mtodo elegante de multiplicar nmeros com sinal recebeu o nome de algoritmo de Booth. Ele foi elaborado a partir da constatao de que com a capacidade de somar e de subtrair nmeros existem vrias maneiras de se calcular um produto. Por exemplo, podemos substituir um string de 1s no multiplicador por uma subtrao quando encontramos o primeiro 1, e por uma soma ao encontrarmos o ltimo 1 do string. Ser vistos no livro texto. Booth buscou atingir maior velocidade de processamento utilizando operaes de deslocamento, que ainda hoje so operaes mais rpidas do que operaes de soma. Baseado nesta observao, se desejarmos maior velocidade na multiplicao de nmeros inteiros por uma potncia de 2, basta que utilizemos operaes de deslocamento indicando a quantidade de deslocamentos igual ao expoente. A grande vantagem do algoritmo de Booth tratar com facilidade os nmeros com sinal. O raciocnio de Booth foi classificar os grupos de bits como incio, meio e fim de um string de 1s. Naturalmente um string de 0s no precisa ser considerado. 3.7 Algoritmo da multiplicao Este algoritmo precisa apenas de dois passos principais: o teste do produto e o seu deslocamento; pois os registradores Produto e Multiplicador podem combinados em um s. O algoritmo comea com o Multiplicador na metade direta do registrador Produto, e 0 na metade esquerda. 1. Testa se Produto igual a 0 ou 1. 2. Produto = 0, passa ao item 4.
19

3. Produto = 1, soma o Multiplicando metade esquerda do Produto e coloca o resultado na metade esquerda do registrador Produto. 4. Desloca o registrador Produto 1 bit direita. 5. Verifica se foram realizadas todas as repeties necessrias de acordo com o tamanho da palavra, se no volta ao item 1. 6. Fim. 3.7.1 Diviso A diviso a operao recproca da multiplicao. Dentre as operaes aritmticas a que aparece menos freqentemente nos cdigos dos programas. No algoritmo da diviso so utilizados dois operandos, o dividendo e o divisor, e produzidos dois resultados o quociente e o resto. A relao entre os componentes da diviso pode ser expressa da seguinte forma: dividendo = quociente x divisor + resto; onde o resto sempre menor que o divisor. s vezes, os programas usam a diviso simplesmente para obter o resto, ignorando o quociente. Alm disso, necessrio que seja detectada a diviso por zero, que matematicamente invlida. 3.7.2 Algoritmo da diviso Da mesma forma que foram combinados registradores na multiplicao, tambm na diviso so combinados dois registradores, o Resto e o Quociente. O algoritmo comea com o Resto na metade esquerda do registrador Resto, e o Quociente na metade direita. 1. Desloca o registrador Resto 1 bit esquerda. 2. Subtrai o registrador Divisor da metade esquerda do registrador Resto e armazena o resultado na metade esquerda do registrador Resto. 3. Testa se Resto menor do que 0. 4. Resto < 0, restaura valor original com Divisor + metade esquerda do Resto, armazenando na metade esquerda do registrador Resto e deslocando 1 bit esquerda, inserindo 0 no novo bit menos significativo, passa ao item 6. 5. Resto 0, desloca o registrador Resto 1 bit esquerda, inserindo 1 no novo bit mais direita.

20

6. Verifica se foram realizadas todas as repeties necessrias de acordo com o tamanho da palavra, se no volta ao item 1. 7. Desloca a metade a esquerda do registrador Resto 1 bit direita, Fim. 3.7.3 Ponto Flutuante Assim como os nmeros decimais podem ser representados em notao cientfica normalizada os nmeros binrios tambm podem. A aritmtica computacional que manipula os nmeros binrios em notao cientfica normalizada denominada de aritmtica de ponto flutuante. Os projetistas do hardware devem encontrar um compromisso entre a mantissa e o expoente dos nmeros em ponto flutuante. A relao entre e mantissa e o expoente expressa do seguinte modo: o aumento do nmero de bits reservados mantissa aumenta a preciso do nmero, enquanto o aumento do nmero de bits reservados ao expoente aumenta o intervalo de variao dos nmeros representados. Deve ser observado que as interrupes relativas ao overflow e ao underflow tambm ocorrem na representao em ponto flutuante. Porm, neste caso, overflow e o underflow ocorrem quando o expoente muito grande ou muito pequeno, respectivamente, para ser armazenado no espao reservado a ele. Outra questo que os projetistas devem decidir se vo ser utilizados os mesmos registradores tanto para nmeros inteiros quanto para nmeros de ponto flutuante. A adoo de registradores diferentes aumenta ligeiramente o nmero de instrues necessrias a execuo do programa. O impacto maior est na criao de um conjunto de instrues de transferncia de dados para mover os dados entre os registradores de ponto flutuante e a memria. Os benefcios esto no fato de no precisar aumentar o tamanho do campo nas instrues para diferenciar os operandos e aumentar a banda passante dos registradores. A partir de 1980 todos os computadores projetados adotam uma representao padro para nmeros em ponto flutuante denominada IEEE 754. A adoo deste padro facilita a portabilidade de programas (preciso simples = 1 bit de sinal, 8 bits de expoente e 23 bits de mantissa + 1 implcito = 24, preciso dupla = 1 bit de sinal, 11 bits de expoente e 52 bits de mantissa + 1 implcito = 53). A adio e a multiplicao com nmeros de ponto flutuante, na sua essncia, utilizam as operaes inteiras correspondentes para operar as mantissas, mas necessria uma manipulao extra nos expoentes e para a normalizao do resultado.

21

3.7.4 Algoritmo da adio em ponto flutuante 1. Compare o expoente dos dois nmeros. Desloque o menor nmero direita at que seu expoente se iguale ao maior nmero. 2. Some as mantissas. 3. Normalize a soma, deslocando direita e incrementando o expoente ou deslocando esquerda e decrementando o expoente. 4. Teste se overflow ou underflow. 5. Sim, gera exceo. 6. No, arredonde a mantissa para o nmero de bits apropriado. 7. Testa se resultado est normalizado. 8. Sim, Fim. 9. No, retorna ao passo 3. 3.7.5 Algoritmo da multiplicao em ponto flutuante 1. Soma os expoentes com peso dos dois nmeros, subtraindo o valor do peso da soma para obter o novo expoente. 2. Multiplique as mantissas. 3. Normalize o produto se necessrio, deslocando direita e incrementando o expoente. 4. Teste se overflow ou underflow. 5. Sim, gera exceo. 6. No, arredonde a mantissa para o nmero de bits apropriado. 7. Testa se resultado est normalizado. 8. No, retorna ao passo 3. 9. No, faa o sinal do produto positivo se ambos os sinais dos operandos originais so os mesmos, caso contrrio o sinal negativo, Fim.

22

4. Ciclo de instruo O ciclo de instruo um processo no qual se utiliza um fluxo de processamento que deve ser seguido at atingir o seu objetivo final, ou seja, possui uma seqncia lgica que busca e executa uma coleo de instrues de mquina. Pode haver interrupes que quebrem este ciclo, se estas esto habilitadas, o caminho alterado para que processo da interrupo seja executado e depois retorne ao ciclo no momento onde foi interrompido. Um exemplo simplificado de um ciclo de instruo a seguinte: - ler as instrues na memria; - interpretar a operao; - buscar os dados para serem processados; - executar as operaes e guardar os resultados; Fluxograma de um ciclo de instruo:

Figura 4.1: Fluxograma de um ciclo de instruo com interrupo

23

4.1 Principais tipos de interrupes Existem dois principais tipos de interrupes. - Interrupo via Hardware: ocorre a partir de algum evento externo, como o acionamento de uma tecla em um perifrico, ou conexo de equipamentos em portas seriais e paralelas, por exemplo. - Interrupo via Software: tambm chamadas de excees, so instrues que desviam o ciclo a determinada rotina especifica. 4.2 Como tratar as interrupes A partir de uma interrupo no ciclo de instrues, o controle responsvel por desviar o programa para uma rotina responsvel por tratar o evento ocorrido, esta a rotina de tratamento de interrupo. Para que o programa volte a ser executado preciso que no momento da interrupo o endereamento do prximo cdigo no ciclo de instrues esteja armazenado em um conjunto de registradores (pilha) e ao fim da rotina de tratamento o endereo de armazenamento restaurado e o ciclo de instrues continua a execuo a partir do ponto onde o programa foi interrompido. A seguir as figuras demonstram um esquemtico de como o sistema trata uma interrupo.

24

- Execuo de uma Interrupo

- Retorno ao programa principal

25

4.3 Ciclo de informao, processamento das informaes passo a passo O ciclo de informao ocorre a partir da execuo do programa pelo processador. Basicamente este ciclo respeita as seguintes ordens de instrues a partir da unidade central de processamento: 1 Busca de instrues na memria; 2 Interpreta a instruo para determinar a ao requerida; 3 Busca dados atravs da instruo requerida (quando a instruo requer a leitura de dados na memria ou em dispositivos de entrada e sada) 4 Processamento de dados, quando a instruo requer uma operao lgica ou aritmtica sobre os dados. 5 Escrita de dados, se a instruo exigir que o resultado da execuo seja escrito em memria ou em mdulo de entrada e sada de dados.

O funcionamento de um teclado de computador dispe, a ttulo de exemplo, como a UCP (Unidade Central de Processamento) trata os ciclos de informaes de um sistema. Ao ter uma tecla pressionada, o teclado emite um sinal de aviso ao processador, este por sua vez identifica a solicitao e a usa para localizar o tratamento de sub-rotina a partir desta interrupo, processada esta sub-rotina o processador se encarrega de retornar ao programa principal

26

Programa em execuo Interrupo gerada pelo teclado

Sub- rotina de Tratamento

Teclado

UCP

Parmetros de Retorno

4.4 Por que ocorre? O ciclo de informao segue este roteiro para que deste modo o processador no fique obrigado a varrer os dispositivos perifricos constantemente, conseguindo executar as outras tarefas ao mesmo tempo. Deste modo a interrupo se torna uma rotina essencial, pois d ao processador a capacidade de trabalhar constantemente em diversas tarefas, parando somente quando chamado por outro dispositivo, alm de dar uma otimizao a linguagem do programa.

27

5. Referncias:

Sistemas Digitais - 10ed. - Princpios e Aplicaes - R.J.Tocci, N.S.Widmer, G.L.Moss Pearson


http://www.siumab.com/site/materias/aoc/Topico32.ppt www.pcs.usp.br/~jkinoshi/2005/e5roberto.doc http://www.dimap.ufrn.br/~ivan/SO/SO-aula3.pdf http://pt.wikipedia.org/wiki/Interrup%C3%A7%C3%A3o http://pt.wikipedia.org/wiki/Ciclo_de_instru%C3%A7%C3%A3o http://rgquintao.com.br/Sistemas%20Operacionais%20I/Solucoes%20de%20Ex ercicios_Autores_V%203.2.pdf http://www-di.inf.puc-rio.br/~endler/courses/inf1019/transp/cap-02.pdf http://regulus.pcs.usp.br/~jean/arquitetura/Aula%2014%20-%20CPU.pdf http://www.arnerobotics.com.br/eletronica/Microcontrolador_PIC_teoria_3.htm http://www.inf.pucrs.br/~ramos/icc_material.html

28

Вам также может понравиться