Академический Документы
Профессиональный Документы
Культура Документы
Osmar Ventura
Sumrio
UNIDADE 1 3 Introduo ao estudo da arquitetura de computadores 3 Introduo 3 Surgimento e evoluo dos computadores 6 Arquitetura de computadores 11 Conceitos complementares 13 Referncias 17 UNIDADE 2 19
Sistemas de numerao 19 Introduo 19 Sistemas de numerao posicionais 20 Base de um sistema de numerao 20 Representao binria 22 Representao em octal e em hexadecimal 24 Converses entre bases numricas 25 Referncias 32 UNIDADE 3 33
Representaes numricas 33 Representao de nmeros inteiros (ponto fixo) 33 Representao de nmeros no formato complementar 39 Representao de nmeros negativos em complemento a base 46 Representao de nmeros reais 52 Representao IEEE 754 para nmeros em ponto flutuante 54 Referncias 58 UNIDADE 4 59
Sistemas digitais 59 Circuitos lgicos 59 Porta lgica 60 Nvel lgico 61 Expresses boolianas 61 Tipos de circuitos lgicos 66 Referncias 70
UNIDADE 5
71
Organizao bsica de um computador 71 Modelo de mquinas 71 Bloco dos dispositivos de I/O 73 Bloco de memria principal 73 Estrutura interna da UCP e funes 76 Principais blocos lgicos que compem uma UCP 80 Funcionamento da UCP 82 Referncias 84 UNIDADE 6 85
Classificao do conjunto de instrues 85 Processamento monociclo e multiciclo 85 RISC versus CISC 90 Referncias 94 UNIDADE 7 95
Desempenho de computadores 95 Medidas de desempenho 95 Avaliando um sistema computacional 96 Uso de pipeline 102 Uso de memria cache 107 Perifricos 110 Referncias 112
Introduo
No estudo de Arquitetura de Computadores, ser necessria a apresentao e o refinamento de alguns conceitos e definies acerca da computao. Inicialmente sero trabalhados os conceitos e definies do nosso objeto de estudo: o computador. Posteriormente, o termo arquitetura ser discutido e ento associado ao objeto computador. Provavelmente o computador um dos inventos mais maravilhosos do homem. Atualmente existem diversos tipos de computadores nas mais variadas aplicaes. Contudo, sua funo inicial era bastante primitiva, ou seja, era usado somente para efetuar clculos matemticos bsicos, como adio e subtrao. Pode-se considerar que a histria da criao e evoluo dos computadores comea na Antiguidade, juntamente com a necessidade dos homens efetuarem contas. Registros histricos do conta de que, quando os pastores buscavam uma forma de contar e armazenar o nmero de ovelhas do seu rebanho, usavam pequenas pedras, denominadas calculus, para representar cada uma de suas ovelhas. Tais calculus eram ento armazenados em uma bolsa de couro e, em um determinado momento, as pedras armazenadas nas bolsas eram comparadas com cada uma das ovelhas do rebanho. Sobrando calculus, significava que havia perda de ovelhas; faltando, indicava que o rebanho, de uma forma ou outra, crescera. Nesse contexto, podemos entender a origem da palavra calcular, que nada mais do que o simples fato de juntar pedras e compar-las com algum outro objeto. claro que hoje, ao pensarmos em calcular algo, contamos com a formalidade da matemtica para regulamentar
a relao de quantidade e, mais especificamente, numrica entre elementos. Na verdade, hoje temos uma matemtica que define algo alm do que simplesmente contar e comparar. medida que a humanidade foi evoluindo, a necessidade de efetuar clculos foi aumentando em importncia e dificuldade. Gradativamente foram surgindo operaes matemticas mais complexas para suprir determinadas necessidades que somente as operaes elementares como somar, subtrair, multiplicar ou dividir no eram suficientemente capazes de atender. Nesse processo de evoluo, o homem sempre desejou usar alguma ferramenta para ajudar na execuo dos clculos. A primeira ferramenta conhecida e usada para calcular denominase baco (Figura 1) e foi criada h aproximadamente 5.500 anos, na Mesopotmia. Sua forma principal era baseada em uma tbua com marcaes especiais indicando as classes numricas (dezena, centena, milhar etc.) e um sistema de representao numrica que considerava a quantidade de calculus em cada marcao. A movimentao das pedras ou outro elemento, como botes de ossos, esferas, contas, entre cada uma das classes representa efetivamente a execuo das operaes matemticas. Ento, seguindo a tendncia de desenvolver dispositivos que auxiliassem no processo de clculos matemticos, foram projetadas e construdas diversas de mquinas com esse propsito. Tais mquinas inicialmente eram quatro chamadas operaes computadores, bsicas apesar de algumas realizarem somente as
Figura 1: baco Fonte: Disponvel em: <http://goo.gl/ZFQ9G>. Acesso em: 12 mai. 2012.
matemticas
Computadores de Propsitos Especficos. Ao longo do processo de evoluo tecnolgica e cientfica, e at mesmo seguindo uma tendncia mais revolucionria, os projetistas de computadores desenvolveram mquinas que podem ser adaptadas s mais variadas funes, o que, de certa forma, cria uma segunda classe de computadores denominada de Computadores de Propsito Geral. Atualmente, o termo Computador de Propsito Especfico foi substitudo por outros substantivos que designam uma funo primria para o dispositivo ou mquina, por exemplo, calculadora, celular, videogame, tablet. Ao longo do tempo, o termo Computador de Propsito Geral vem sendo substitudo simplesmente por computador. Assim, deve-se entender que todos os
sistemas que se baseiam em operaes matemticas so, na sua essncia, computadores, podendo diferir somente quanto a sua aplicao (genrica ou especfica).
Figura 2: Computador Fonte: Disponvel em: <http://goo.gl/ABequ> Acesso em: 12 mai. 2012.
Figura 3: Vdeo-Game Atari Fonte: Disponvel em: <http://goo.gl/ABequ> Acesso em: 12 mai. 2012.
Uma segunda abordagem quanto classificao dos computadores aponta para a modalidade de processamento numrico, podendo um computador ser classificado em analgico e/ou digital. Computadores analgicos operam por comparaes; normalmente utilizam aparatos mecnicos para efetuar o posicionamento de engrenagens ou ponteiros. A fim de efetuar a leitura ou o processamento dos dados em um computador analgico, o sistema dever possuir uma marca de referncia para todas as suas variveis e, na computao, considerar a sua relao com a posio do marcador/ponteiro. Pode-se tomar como exemplo de computador analgico um termmetro a mercrio, ou um relgio com ponteiros, bem como uma rgua plstica usada para efetuar medidas.
Por outro lado, encontram-se os computadores digitais, que se caracterizam por efetuarem os processamentos sem a necessidade de referncias ou marcaes entre os elementos que envolvem uma determinada operao matemtica. Os computadores digitais necessitam somente das regras que estabelecem as relaes entre os elementos (operandos) de cada operao matemtica. Ainda, nos computadores digitais, para mostrar ou representar o valor de um determinado dado, por exemplo, o nmero 2, basta apresentar um smbolo que previamente foi associado ao algarismo em questo. Pense em um termmetro digital, pelo qual o usurio, ao efetuar a leitura da temperatura, simplesmente identifica o valor atravs do smbolo apresentado em uma unidade de sada apropriada. Nos computadores digitais, assim como nos analgicos, para indicar um determinado algarismo, ser necessrio simplesmente representar o nmero atravs da tecnologia adotada para implementao do sistema. Ao contrrio do que muitos pensam, os computadores digitais no so 100% implementados com tecnologia puramente digital, existe sempre pelo menos uma pequena unidade que opera no modelo analgico e cuja interao com o restante dos blocos que compem o computador digital depende de um processo de converso, seja de analgico para digital (A/D), seja de digital para analgico (D/A). Ainda sob essa tica, deve-se considerar que o mundo real essencialmente de natureza analgica e que, se os computadores foram desenvolvidos para facilitar ou auxiliar os homens em alguma tarefa, ao empregar um computador digital em uma tarefa especfica, deve-se adequar os sinais entre o computador e o mundo externo, o que deve passar pelo processo de converso A/D ou D/A. Como tecnologicamente os computadores digitais evoluram de forma mais significativa do que os computadores analgicos, pela facilidade de implementao e custos mais baixos, a histria da computao se fez, em sua maior parte, atravs de modelos de computadores digitais. Dessa forma, o escopo da disciplina Arquitetura de Computadores engloba somente os computadores digitais, apesar de, recentemente, modernas tecnologias, como a nanotecnologia, possibilitarem o projeto de computadores analgicos mais funcionais, de desempenho e aplicaes superiores aos digitais.
dispositivo que operava no sistema decimal e que foi construdo para auxiliar no processo de clculo de impostos para o governo francs. A mquina encontra-se exposta no Museu de Artes e Ofcios de Paris. Em 1801, Joseph Marie Jacquard inventa e constri um sistema mecnico que usa cartes perfurados (metlicos) para codificar operaes repetitivas de comando de teares, transformando parte do processo de controle das mquinas
Figura 5: Pascaline Fonte: Disponvel em: <http://goo.gl/ABequ>. Acesso em: 12 mai. 2012.
em automtico. Da surgiu a ideia de programar as mquinas de tecer para produzir padres de cores diferentes.
A ideia de Jacquard influencia o francs Charles Babbage a projetar uma mquina de calcular cujo processo de clculo pudesse ser controlado por cartes. Ento, em 1822, Babbage publica um trabalho intitulado Differential Engine, no qual apresenta os princpios para a construo de uma mquina que pudesse efetuar operaes algbricas: o programa deveria residir na prpria mquina, os resultados intermedirios de clculo deveriam ser armazenados na prpria mquina. Deveriam existir, ainda, dispositivos que permitissem a introduo dos dados e visualizao dos resultados. Tal mquina no pde ser totalmente construda por Babbage por limitaes tecnolgicas da poca. Trabalhou junto com ele Ada Byron King, tambm chamada de Ada Lovelace, historicamente conhecida como a primeira programadora, pois desenvolvia programas para a mquina que estava sendo projetada por Babbage. Ada contribuiu para a computao apresentando os conceitos de subrotina, uma sequncia de instrues que pode ser usada vrias vezes; loop, estrutura que permite a repetio de uma srie de cartes; salto condicional, que permite saltar um ou mais cartes caso uma condio seja satisfeita. Todos esses conceitos so base da computao moderna. Em 1854, George Boole prope e apresenta uma nova lgebra (lgebra Booleana), tendo por base a aplicao de operadores lgicos (E, OU, NO) a elementos algbricos. Herman Hollerit, em 1886, inventa um sistema para codificao de letras, algarismos e smbolos, sob a forma de perfuraes realizadas em um carto de papel, e constri mquinas eletromecnicas
Em 1936 o alemo Konrad Zuse apresenta o primeiro computador eletromecnico, denominado Z1. O computador executava clculos lidos em fitas perfuradas (Figura 6). Howard Aiken produz, em 1944, um computador baseado nos conceitos da mquina de Babbage. De codinome Harvard Mark I, era um computador totalmente eletromecnico, construdo atravs de uma parceria entre a Universidade
Figura 6: Z1 Fonte: Disponvel em: <http://goo.gl/ABequ>. Acesso em: 12 mai. 2012
de Harvard e a IBM para a Marinha Americana, que desejava uma calculadora de tabelas para uso na navegao.
Paralelamente ao desenvolvimento do Mark I, sob a liderana dos engenheiros J. Presper Eckert e John Mauchly e com o patrocnio do Exrcito Americano, em 1946 construdo o primeiro computador a vlvulas da histria, o ENIAC Eletronic Numeric Integrator and Calculator. Ele foi projetado para auxiliar no clculo de trajetrias balsticas. A programao do ENIAC era realizada atravs de reconexo dos fios de um painel principal, e os ajustes dos dados eram efetuados por botes rotativos localizados em diversos outros painis.
O Professor John Von Neumann publica, em 1946, um trabalho intitulado Electronic Discrete Variable Automatic Computer, em que apresenta uma organizao lgica otimizada para o projeto e desenvolvimento de computadores, a qual usada at hoje nos
Figura 7: ENIAC Fonte: Disponvel em: <http://goo.gl/SGXZl>. Acesso em: 12 mai. 2012.
projetos
de
computadores
sendo
conhecida como Arquitetura de Von Neumann. A estrutura apresentada formada pela Unidade Central de Processamento (CPU ou UCP),
que contm a Unidade Lgica e Aritmtica. Externamente a essa UCP , existe o conjunto de dispositivos denominados genericamente de perifricos e uma unidade de memria de programas e dados. Von Neumann ainda apresentou outras ideias, o que para a poca foi um salto significativo. Uma segunda ideia foi a proposta de implementar um computador que funcionava com o conceito de programa armazenado, em contraste ao modelo usado na poca, em que o programa era lido diretamente do dispositivo de entrada e sada, painis de cabos e conectores. Uma terceira proposta estava relacionada com a reduo do volume de cabos e fios usados nos computadores; a ideia era empregar o sistema numrico binrio em detrimento do decimal. A reduo est relacionada na escala de 10:1 pares de fios, ou seja, para representar nmeros de dois dgitos decimais, eram necessrios 10 pares de fios usando o sistema decimal; para o sistema binrio, necessrio usar no mximo 4 pares para representar os mesmos nmeros. E, ainda com a utilizao do sistema binrio, a implementao das propostas de Boole era tecnologicamente mais adequada. Considerando todas as propostas de Von Neumann, em 1946 iniciou a construo do computador EDVAC, que entrou em operao em 1951.
Uma abordagem alternativa a proposta por Von Neumann, a chamada Arquitetura Harward, diferindo apenas na configurao e acesso a Unidade de Memria, que passa a ser tratada de forma segmentada, ou seja, uma unidade para armazenamento de dados e outra para armazenamento de programas. Esta alternativa apresenta uma melhoria no desempenho, mas incrementando o custo de produo do computador.
UCP / CPU
Memria de dados Dispositivos de ENTRADA e SADA Memria de Instrues
Em 1948, nos Laboratrios BELL, nos Estados Unidos, descoberto o transistor, que contribuir, a partir de 1960, para a miniaturizao dos circuitos eletrnicos, para a reduo do volume fsico dos computadores, para o aumento do desempenho computacional e a popularizao dos computadores. No final da dcada de 1970 e incio dos anos 1980, Clive Sinclair, no Reino Unido, concebe um computador minsculo denominado ZX81, que integra na sua mquina um interpretador para uma linguagem de programao (BASIC - Beginers All-purpose Symbolic Instruction Code), utilizando como perifricos, alm de um teclado de membrana, um receptor de TV e um gravador de cassetes musical para gravar os dados. A capacidade da memria desse computador era cerca de 8 vezes maior que a do ENIAC. Paralelamente, Steven Jobs e Steven Wozinak, nos E.U.A., concebem, segundo os mesmos princpios de miniaturizao, facilidade de utilizao e baixo preo, um computador que denominam Apple I. Vrios fabricantes iniciam, nessa poca, a produo em larga escala de computadores de uso pessoal, de fcil utilizao e baixo preo. O computador transforma-se num bem para consumo. No se pode desconsiderar que, ao longo do processo de evoluo e disseminao dos computadores, no foi somente o hardware que recebeu uma ateno especial da indstria; o desenvolvimento de softwares cresceu em nmero, grau e tecnologia. interessante observar que, no incio do sculo XIX, no existia tecnologia para a implementao da mquina de
10
Babbage e que vrios conceitos de desenvolvimento de software j estavam sendo cunhados, e os mesmos conceitos so utilizados at hoje. Fica um pergunta: relacionando a evoluo do software e do hardware, qual deles est mais avanado? Com o processo de evoluo do software, possvel estudar, entender e implementar um computador em camadas ou nveis.
Arquitetura de computadores
O termo Arquitetura de computadores usado para descrever todos os atributos de um computador que so visveis ao programador, por exemplo, o conjunto de instrues vlidas para uma determinada mquina, o nmero de bits usados para a representao de dados, os mecanismos de acesso aos dispositivos de entrada e sada, as tcnicas de endereamento de memria, o nmero de unidades aritmticas de um computador, entre outros atributos. Pode-se considerar que a arquitetura descreve como ser a interseo entre o hardware e o software, para ilustrar melhor este conceito, considere que um computador pode ser subdividido em partes dispostas hierarquicamente em diversos nveis, onde a complexidade em termos de implementao do nvel mais baixo no visvel para o nvel superior.
Computador de seis nveis
Nvel 5 Nvel das linguagens orientadas para soluo de problemas
Nvel 4
Nvel 3
Nvel 2
Nvel 1
Nvel da microarquitetura
Nvel 0
11
Pela figura acima, apresentado um computador que estrategicamente foi subdividido em 6 nveis. O nvel mais baixo, Nvel 0, representa o verdadeiro hardware da mquina, so os circuitos eletrnicos que executam efetivamente cada instruo da mquina, neste nvel os elementos estudados/avaliados so chamados de portas lgicas e quando tratados individualmente, realizam funes elementares padro (AND, OR, NOT). O Nvel 0 comumente chamado de Nvel Lgico Digital. No Nvel de micro arquitetura, os elementos so uma combinao de portas lgica, os quais conceitualmente efetuam funes lgicas mais elaboradas. Coisa do tipo, somadores aritmticos, comparadores, registradores so exemplos dos elementos que esto presentes no Nvel 1. Como no Nvel 1 possvel encontrar blocos lgicos capazes de efetuar diversas operaes, como por exemplo, uma adio, interessante abstrair toda a complexidade que envolve a execuo desta operao, esquecendo efetivamente do circuito eletrnico, da existncia de portas lgicas e simplesmente, definir um cdigo representa toda a operao de adio. Assim formado o Nvel 2, ou seja, de cdigos que representam efetivamente cada operao que pode ser realizada pelo hardware. Neste nvel definido a linguagem de mquina de um determinado computador, sendo denominado Nvel de Arquitetura do Conjunto de Instrues (ISA Instruction Set Architecture). Deve-se observar que o projeto de qualquer computador comea pela definio do conjunto de instrues do mesmo. neste nvel que se concentra o estudo da disciplina Arquitetura de Computadores. O Nvel de Sistema Operacional da Mquina esconde a complexidade de entendimento de hardware e de funcionalidades especificas do computador, como por exemplo, como deve ser efetivamente o processo de leitura e escrita em uma unidade de armazenamento em massa. Neste nvel, Nvel 3, so tratados funcionalidades operacionais que permitem o uso dos recursos de hardware por grande parte dos usurios. Finalizando, os nveis 4 e 5, Nvel de linguagem de montagem e Nvel de linguagem orientado a problemas, respectivamente, possibilita que usurios mais avanados possam desenvolver ferramentas/aplicaes que fazem do computador uma poderosa ferramenta para a soluo de problemas. A viso do computador atravs deste nvel mais sofisticada e no apresenta toda a complexidade dos circuitos eletrnicos.
12
A Organizao de computadores
SOFTWARE
um como de
termo as um
usado
para
descrever arquiteturais so
caractersticas
determinado
computador
ARQUITETURA
implementadas fisicamente, em termos de sinais eltricos, interfaces entre unidades operacionais, tecnologias de memrias, entre outras. Para entender melhor esse conceito, a definio de implementao do subsistema eletrnico que efetua
HARDWARE
a multiplicao passa pela escolha do uso de uma unidade especializada, dedicada multiplicao, ou o processo de multiplicao efetuado atravs de somas sucessivas; a escolha da forma de implementao um problema tpico tratado em organizao de computadores. E, ainda, a escolha da tecnologia base de implementao do banco de memria principal do computador, entre memrias estticas e dinmicas, uma caracterstica organizacional e no arquitetural de um computador.
Conceitos complementares
Abaixo so apresentados alguns conceitos necessrios ao entendimento da disciplina Arquitetura de Computadores. Hardware: palavra usada para relacionar toda estrutura fsica empregada na construo de um computador. As caractersticas visuais, mecnicas e eltricas so definies encontradas no hardware de uma determinada mquina. At os anos 1980, o hardware desenvolvido para um computador no era compatvel com o hardware de outro computador, mesmo entre computadores de um mesmo fabricante. Atualmente, existem padres de desenvolvimento e compatibilidade de hardwares, sendo possvel usar um teclado fornecido pelo Fabricante X tanto no computador A quanto no computador B. Software: termo empregado para relacionar todos os elementos abstratos que envolvem o comportamento e o uso dos computadores. O software no possui caractersticas visuais definidas, ou melhor, no existe uma nica forma de ser representado fisicamente. O formato visual do software depende da experincia e envolvimento com o uso de
13
computadores. Ao falar sobre o software Windows a uma pessoa que no trabalha diretamente com computadores, ela pode imaginar a tela padro desse software que freqentemente mostrada pelos agentes de marketing, como sendo o Windows. Por outro lado, se a pessoa envolvida trabalha com vendas de produtos de informtica, pode imaginar, por exemplo, a caixa que contm o produto e que entregue aos compradores. No obstante tudo isso, uma pessoa que trabalha com o desenvolvimento do software Windows, ao falar sobre ele, pode imaginar uma tela de computador com uma seqncia grande de frases apresentadas em um editor de textos. O que se quer dizer com tudo isso que o software no possui uma identidade visual padro, no possvel visualizar a sua estrutura fsica, nem mesmo toc-lo, contudo possvel desenvolver um software e simplesmente us-lo. Assim, o software pode ser classificado conforme o seu relacionamento direto com o hardware ou com o usurio do computador. Os softwares so classificados como bsico, quando foram desenvolvidos para controlar diretamente um determinado hardware. Por outro lado, o software que foi concebido para relacionar ou facilitar a operao do computador pelo usurio classificado como software utilitrio. So exemplos de softwares bsicos os sistemas operacionais Windows, Linux, Mac OS, Android; os drivers de dispositivos como impressoras, scanners, cmeras fotogrficas, pendrive; tradutores e compiladores de linguagens para desenvolvimento de softwares; firmwares, softwares que vm gravados em alguns dispositivos eletrnicos (Ipod, televiso, micro-ondas etc.) e que so comumente denominados de BIOS. Os softwares usado para navegar pela Internet (Firefox, Chrome, Internet Explorer), copiar um arquivo em um pendrive, ouvir msicas no computador so exemplos de softwares utilitrios. Programa: denominao tcnica mais especfica de software, que representa os elementos usados para descrever o comportamento esperado de um computador, ou seja, o que efetivamente o computador dever executar em funo do tempo e das variveis de controle do prprio programa. Num nvel mais baixo, entende-se como a descrio da sequncia de operaes matemticas, instrues, que um determinado computador dever executar para desempenhar uma tarefa. Essa descrio dever seguir uma ordem lgica e uma formalidade em suas sentenas, o que por sua vez caracteriza uma linguagem de programao de computadores. A linguagem nativa de um computador chamada de Linguagem de Mquina, a qual pode ser representada por um sequncia de zeros e uns (0s e 1s) ou mesmo um grfico de sinais eltricos. Essa linguagem considerada a linguagem de mais baixo nvel, por estar relacionada diretamente com o hardware do computador. Visando facilitar o desenvolvimento
14
de softwares, diversos outros nveis e tipos de linguagens foram desenvolvidos, cada um com caractersticas especficas e voltado para uma determinada classe de problema (financeiro, cientfico, manipulao de textos etc.), bem como uma maior facilidade de manipulao por parte do programador, j que programar pensando somente em uma seqncia de zeros e uns bastante tedioso e demorado. Como na verdade o computador s entende/executa instrues na linguagem de mquina, necessrio transformar um programa descrito em uma linguagem diferente da linguagem nativa de um computador na linguagem de mquina prpria do computador que ir executar o programa (linguagem de mquina). Para efetuar essa transformao, so utilizados programas tradutores e/ou interpretadores de linguagens de programao de computadores, o que, de certa forma, permite mudar o nvel ou tipo de linguagem de um programa, bem como adequar um software linguagem nativa de um determinado computador. Tradutor: transforma ou converte o programa descrito na Linguagem X para a Linguagem Y. A traduo no executada parcialmente, o programa descrito na nova linguagem s gerado aps a traduo de todo o programa na linguagem origem. Assim, para executar o programa na nova linguagem, o processo de traduo dever ter sido encerrado com sucesso, sendo que, de outra forma, o novo programa no criado. Somente aps a criao do programa na nova linguagem que ele poder ser executado pelo computador. Como exemplo de tradutor, podem-se destacar os compiladores da Linguagem C (Dev-C++). Deve-se observar que o processo de compilao mais complexo do que parece, e no assunto abordado no contexto de arquitetura de computadores. Interpretador: processo que pode ser implementado por software ou diretamente por hardware. O interpretador no gera um novo programa, ele simplesmente transforma e imediatamente executa cada instruo do programa na linguagem origem diretamente na linguagem destino. Erros no processo de interpretao podem ocorrer, ocasionando ou no a parada do processo; isso depende exclusivamente da implementao do interpretador. Diferentemente do tradutor, o interpretador no gera um novo programa para que futuramente possa ser executado. Como exemplo de interpretador, podem-se citar os navegadores da Internet, os quais recebem programas na linguagem HTML, interpretando-a e executando cada um dos seus comandos. Havendo erros de interpretao, o processo no interrompido e, por opo dos desenvolvedores dos interpretadores, os erros, s vezes, no so mostrados, e os resultados referentes execuo do programa so exibidos na tela do computador. Um segundo exemplo so os interpretadores da Linguagem Basic, que, por sua vez, ao encontrarem
15
um erro, param a execuo do programa no ponto especfico do erro, reportando a classe do erro ao usurio. Atualmente usado um tipo de interpretador muito interessante e que vem mudando significativamente o uso de recursos computacionais: so chamados de mquinas virtuais, implementadas por softwares como Virtual PC e VMware. Esse tipo de interpretador permite que um computador/hardware possa simular a existncia de outros computadores; algo como se um nico computador pudesse virar vrios outros, executando aplicaes variadas e se comunicando como se fossem computadores fsicos distintos. Memria: dispositivo usado para armazenar contedos no formato digital. Pode ser classificado de acordo com a sua proximidade Unidade Central de Processamento - CPU. Normalmente seu volume de armazenamento medido em bytes, o que define a unidade mnima de armazenamento. Tipicamente so denominados de Memria Principal os dispositivos externos que esto ligados diretamente CPU e que armazenam o programa e os dados que esto em execuo/processamento. Os dados e programas que no esto em execuo normalmente so armazenados na memria secundria ou memria de armazenamento em massa, a qual est ligada CPU indiretamente atravs dos dispositivos de entrada/sada (I/O - Input/Output). importante observar que necessrio sempre copiar os programas e dados da memria secundria para a principal a fim de execut-los. As memrias so agrupamentos de clulas de tamanho padro, normalmente bytes, sendo que cada das clulas possui uma identificao/endereo exclusivo. Registrador: tipo especial de memria formada por uma nica clula, localizado na parte interna da CPU. O acesso ao registrador exclusivo da CPU, e ele possui um tempo de resposta muito superior ao desempenho da Memria Principal. O termo Palavra est associado ao tamanho ou a largura da clula que forma cada um dos registradores de uma CPU; expressa o nmero de bits da clula de cada registrador. Quando se fala de uma CPU ou Processador de 32 bits, por exemplo, entre outras caractersticas, est sendo informado que normalmente os registradores da CPU possuem 32 bits de largura. Nesta unidade foram apresentados os conceitos bsicos de computao, bem como a motivao para o surgimento dos computadores. Um modelo clssico de implementao de computador chamado Arquitetura de Von Neumann, foi mostrado de forma sucinta, sendo que na Unidade 5, este modelo ser discutido de forma mais detalhada. A necessidade de entendimentos sobre operaes e representaes numricas so importantes a medida em que entendemos que os computadores atuais nada mais so do que complexas mquinas de calcular. Esta unidade servir de base de consulta para o andamento da disciplina.
16
Referncias
LORIN, Harold. Introduo arquitetura e organizao de computadores. ISBN 8570011911 Rio de Janeiro: Campus, 1985. 362p. MURDOCCA, Miles; HEURING, Vicent. Introduo a Arquitetura de Computadores. Rio de Janeiro: Ed. Campus, 2000. PATTERSON, David A.; HENESSY, Jonh L. Organizao e Projeto de Computadores. 2. ed. Rio de Janeiro : LTC Editora S/A, 1998. STALLINGS, W. Arquitetura e Organizao de Computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. STALLINGS, William. Arquitetura e organizao de computadores: projeto para o desempenho. 5. ed. ISBN 85-87918-53-2. So Paulo: Prentice-Hall, 2002. 786 p. TANENBAUM, A. Organizao Estruturada de Computadores. 4. ed. So Paulo:
Prentice-Hall, 2006. TORRES, Gabriel. Hardware: curso completo. 4. ed. ISBN 85-7323-165-3. Rio de Janeiro: Axcel Books, 2001. 1398 p. WEBER, Raul Fernando. Fundamentos de Arquitetura de Computadores. Srie Livros Didticos. 2.ed. ISBN 8524106352. Porto Alegre: Sagra Luzzatto, 2001. 299p.
Links:
COMPUTER HISTORY. The First Mainframes. Disponvel em: <http://www.computerhistory.org/ revolution/mainframe-computers/7/166>. Acesso em: 12 mai. 2012. COMPUTER HISTORY. Timeline - CHM Revolution. Disponvel em: <http://www.computerhistory. org/revolution/timeline>. Acesso em: 12 mai. 2012. MUSEU DO COMPUTADOR. Disponvel em: <http://www.museudocomputador.com.br/>. Acesso em: 12 mai. 2012. OLHAR DIGITAL. Museu do Computador. Disponvel em: <http://olhardigital.uol.com.br/ produtos/central_de_videos/museu-do-computador>. Acesso em: 12 mai. 2012.
17
WIKIPDIA. baco. Disponvel em: <http://pt.wikipedia.org/wiki/%C3%81baco#.C3.81baco_ mesopot.C3.A2mico>. Acesso em: 12 mai. 2012. YOUTUBE. Historia de la computadora para nios. Disponvel em: <http://www.youtube.com/ watch?v=OTwqEnrZSQY&feature=related>. Acesso em: 12 mai. 2012. YOUTUBE. Intro to Computer Architecture. Disponvel em: <http://www.youtube.com/ watch?NR=1&v=HEjPop-aK_w&feature=endscreen>. Acesso em: 12 mai. 2012. YOUTUBE. John Von Neumann (biografia). Disponvel em: <http://www.youtube.com/watch?fea ture=endscreen&NR=1&v=RF_CZpmVGzw>. Acesso em: 12 mai. 2012. YOUTUBE. Von Neumann architecture and modern PCs. Disponvel em: <http://www.youtube. com/watch?v=eWhnMNjxYDQ&feature=fvwrel>. Acesso em: 12 mai. 2012.
18
Introduo
Os sistemas de numerao so mecanismos que definem os smbolos numricos e as regras para a manipulao e representao dos valores a serem registrados. Na Antiguidade, duas formas de representar quantidades foram inventadas. Inicialmente, os egpcios criaram um sistema em que cada conjunto de 10 unidades era representado por um smbolo diferente. Por exemplo, se escolhssemos smbolos ao acaso e usssemos # para representar uma centena, & para representar uma dezena e @ para representar uma unidade, teramos que ###&&@ representaria 321. O segundo sistema desenvolvido foi o sistema de numerao romano, no qual so usados smbolos (letras) que representam as quantidades, por exemplo: I (valendo 1), V (valendo 5), X (valendo 10), C (valendo 100) etc. A regra de posicionamento determina que as letras que representam quantidades menores e precedem as que representam quantidades maiores sejam somadas; se o inverso ocorre, o menor valor deve ser subtrado do maior (e no somado). Assim, o nmero 128 representado em algarismos romanos por CXXVIII (= 100 + 10 + 10 + 5 + 1 + 1 + 1 = 128). Por outro lado, o valor 94 representado por XCIV (= (-10 + 100) + (-1 + 5) = 94). Nesses sistemas, os smbolos tinham um valor intrnseco, independente da posio que ocupavam na representao (sistema numrico no-posicional). Um grande problema desse sistema a dificuldade de realizar operaes com essa representao. Experimente multiplicar CXXVIII por XCIV! Assim, posteriormente foram criados sistemas em que a posio dos algarismos no nmero passou a alterar seu valor.
19
20
Generalizando, temos que uma base b qualquer dispor de b algarismos, variando entre 0 e (b-1) algarismos. A representao do nmero 125,3810 (base 10) significa 1x102 + 2x101 + 5x100 + 3x10-1 + 8x10-2. Assim, para representar uma quantidade N qualquer, numa dada base b, com um nmero tal como segue, temos: Nb = an.bn + .... + a2.b2 + a1.b1 + a0.b0 + a-1.b-1 + a-2.b-2 + .... + a-n.b-n (Expresso 1) Sendo que: an.bn + .... + a2.b2 + a1.b1 + a0.b0 a parte inteira e a-1.b-1 + a-2.b-2 + .... + a-n.b-n a parte fracionria. (Expresso 3) (Expresso 2)
Intuitivamente, sabemos que o maior nmero que podemos representar com n algarismos, na base b, ser o nmero composto n vezes pelo maior algarismo disponvel naquela base (ou seja, b-1). Por exemplo, o maior nmero que pode ser representado na base 10 usando 3 algarismos ser 999 (ou seja, 103 - 1 = 999). Genericamente falando, podemos ver que o maior nmero inteiro N que pode ser representado, em uma dada base b, com n algarismos (n casas), ser N = bn 1, assim como o menor nmero inteiro com n algarismos ser formado por n vezes o primeiro algarismo da base em questo, ou seja, o algarismo 0 (zero). Ainda, a quantidade de nmeros distintos a serem representados em uma base numrica b est relacionada com a quantidade de algarismos/dgitos ou casas numricas usadas para a representao numrica. Ento, a quantidade de nmeros distintos a serem representados na base b com n algarismos determinada pela equao bn. Nos sistemas de numerao, usamos o termo algarismo/dgito mais significativo para referenciarmos o algarismo ou dgito mais esquerda de uma dada representao numrica. Por outro lado, o termo algarismo/dgito menos significativo est associado ao dgito mais direita de um nmero. Tomando como exemplo o nmero 8672, temos como dgito mais significativo o algarismo 8, e o 2 como o menos significativo. Podemos dizer que o algarismo 7 o segundo dgito menos significativo, bem como o terceiro mais significativo e assim por diante.
21
Representao binria
Os computadores modernos utilizam o sistema binrio, isto , todas as informaes armazenadas ou processadas no computador so representadas usando apenas DUAS grandezas fsicas, que matematicamente so representadas pelos algarismos 0 e 1. Essa deciso de projeto deve-se maior facilidade de representao interna no computador, que obtida atravs de dois diferentes nveis de tenso ou mesmo corrente. Havendo apenas dois algarismos, portanto dgitos binrios, o elemento mnimo de informao nos computadores foi denominado bit, que o acrnimo de binary digit. Na base 2 o nmero representado pela sequncia 10 correspondente ao nmero dois na base 10, ou seja, 102 = 210. Ento podemos afirmar que dez igual a dois? No, dez no e nunca ser igual a dois! Na verdade, a sequncia dos algarismos 1 e 0, ou seja, 10, no significa necessariamente o nmero dez. Como estamos acostumados a associar 10 a dez, pois sempre pensamos no sistema de numerao decimal, achamos estranho falar que 10 igual a 2. Considere as observaes abaixo: -- O nmero 102 deve ser lido como um-zero na base 2 e equivale ao nmero 2 na base 10 (210). -- O nmero 105 deve ser lido com um-zero na base 5 e equivale ao nmero 5 na base 10 (510). -- O nmero 1010 pode ser lido como um-zero na base 10 ou ento como dez na base dez. -- 1016, lido como um-zero na base 16, equivale ao nmero 1610. Portanto, 10 s ser igual a dez se, e somente se, o nmero estiver representado na base dez.
Uma curiosidade: O nmero 10b sempre igual base, porque, em uma dada base b, os algarismos possveis vo ser sempre de 0 a (b - 1). Como o maior algarismo possvel em uma dada base b igual a (b-1), o prximo nmero ser (b - 1 + 1 = b) e, portanto, ser sempre 10. Assim, numa dada base qualquer, o valor da base ser sempre representado por 10.
22
Obs.: Toda vez que um nmero for apresentado sem que seja indicado em qual sistema de numerao ele est representado, entenderemos que a base dez. Sempre que outra base for utilizada, a base ser obrigatoriamente indicada por um ndice na sequncia do nmero.
Pela TABELA 1, pode-se identificar a equivalncia de cada sequncia binria com o seu correspondente decimal. Considerando que a representao numrica binria um sistema de numerao posicional, o algarismo 1 representa valores (pesos) diferentes e compatveis com a sua posio relativa no nmero. Como o algarismo 0 indica um valor nulo, o valor representado por ele sempre ser zero, independentemente de sua posio no nmero. Assim, possvel representar todos os demais nmeros decimais no sistema binrio, atravs da soma dos pesos dos algarismos 1 na representao numrica binria. Observe pela TABELA 2 como so formados os nmeros em binrio e seus correspondentes em decimal.
23
Obs.: Convencionalmente, em algumas linguagens de programao, os nmeros na base 16 ou sistema hexadecimal so grafados com a letra H ou h aps o nmero. Por exemplo: FFH significa que o nmero FF est em hexadecimal. No confundir o H ou h com mais um dgito, mesmo porque em hexadecimal s temos algarismos at F e, portanto, no existe um algarismo H. Os nmeros na base 8 ou octal so grafados com o algarismo zero na parte mais significativa do nmero; por exemplo: 0326.
24
b. Converter para decimal o nmero 361,458 Pela Expresso 1, temos: 3618 = 3x82 + 6x81 + 1x 80 + 4x8-1 + 5x8-2 = 3x64 + 6x8 + 1x1 + 4x0,125 + 5x0,015625 = 192 + 48 + 1 + 0,5 + 0,078125 = 241,578125
25
Para o processo de converso, deve-se considerar que os algarismos da base 16 de A a F correspondem aos nmeros decimais de 10 a 15, respectivamente. Ento, reescrevendo a expresso, temos: 1x162 + B16x161 + C16x160 + 4x16-1 = 1x162 + 11x161 + 12x160 + 4x16-1 = 1x256 + 11x16 + 12x1+ 4x0,0625 = 256 + 176 + 12 + 0,25 = 444,25
Processo para a parte inteira do nmero: O nmero decimal dever ser dividido sucessivas vezes pela base, sendo que o resto de cada diviso dever ocupar sucessivamente as posies de ordem menos significativas do nmero, at que o resto da ltima diviso, que resulta em quociente zero, ocupe a posio de ordem mais significativa. Tome como exemplo a converso do nmero 326 para a base 2, base 8 e base 16:
26
326 - 163 0
2 163 -162 1
2 81 - 40 1
2 40 - 20 0
2 20 - 20 0
2 10 - 10 0
2 5 -2 1
2 2 2 0
2 1 0 1
2 0
32610 =
326 - 320 6
8 40 - 40 0
8 5 -0 5
8 0
32610 =
326 - 320 6
8 20 - 16 4
16 1 -0 1
16 0
32610 =
27
Pelas figuras 12, 13 e 14, possvel verificar o procedimento de converso de um nmero inteiro na base 10 para os sistemas binrio, octal e hexadecimal. Deve-se observar que os restos das divises so escritos na forma inversa, ou seja, do algarismo menos significativo para o mais significativo. Ainda, considerando o processo de converso para a base 16, quando o resto for maior que 9, deve-se utilizar os respectivos algarismos hexadecimais A, B, C, D, E ou F conforme o caso. Processo para a parte fracionria do nmero: O procedimento para encontrar a parte fracionria de um nmero na nova base consiste em um processo de multiplicao sucessiva da parte fracionria do nmero em decimal pela base destino. A parte inteira do resultado da primeira multiplicao ser o valor da primeira casa fracionria, e a parte fracionria desse nmero ser de novo multiplicada pela base e assim por diante, at o resultado ser zero ou at encontrarmos o nmero de casas fracionrias desejado. Por exemplo, vamos converter 326,651 para a base 2, 8 e 16, com 5 algarismos fracionrios: 1. A parte inteira ser convertida pelo procedimento descrito no item anterior. 2. A parte fracionria ser determinada pelo processo de multiplicaes sucessivas, conforme verificamos nas figuras 15, 16 e 17.
Passo 1 2 3 4 5 6 0,651 0,302 0,64 0,208 0,416 0,832 0,651 = x x x x x x 1 0 2 2 2 2 2 2 1 = = = = = = 0 1.302 0,604 1,208 0,416 0,832 1,662 0 1 Algarismo da parte fracionria 1 0 1 0 0 1
28
Passo 1 2 3 4 5 6 0,651 0,416 0,656 0,496 0,936 0,976 0,651 = x x x x x x A 16 16 16 16 16 16 6 A = = = = = = 7 10,416 6,656 10,496 7,936 14,976 15,616 E F
3. Cada nmero ser montado atravs da concatenao da parte inteira com a parte fracionria, separadas por vrgula:
= = =
Em todos os casos, a converso foi interrompida quando encontramos o nmero de algarismos fracionrios solicitado no enunciado. No entanto, como no encontramos resultado 0 em nenhuma das multiplicaes, poderamos continuar efetuando multiplicaes indefinidamente at encontrar (se encontrarmos) resultado zero. No caso de interrupo por chegarmos ao nmero de dgitos especificado sem encontramos resultado zero, o resultado encontrado aproximado, e essa aproximao ser funo do nmero de algarismos que calcularmos. Assim, se convertermos os nmeros da Figura 18 em decimal, chegaremos a um valor aproximado.
29
101010012 = 10.101.0012 (separando em grupos de 3, sempre comeando da direita para a esquerda) Considerando que: 0102 = 28 1012 = 58 0012 = 18 Portanto: 101010012 = 2518 Nas converses entre as bases 2 e 16, deve ser considerado que 24 = 16. Assim, basta separar o nmero binrio em grupos de 4 bits e converter parcialmente cada um dos grupos de 4 bits para hexadecimal. Observe no exemplo abaixo o processo:
110101011012 = 110.1010.11012 (separando em grupos de 4 bits, sempre comeando do algarismo menos significativo para o mais significativo) Considerando que: 1102 = 616 10102 = A16 11012 = D16 Portanto: 110101011012 = 6AD16 Para convertermos nmeros escritos em hexadecimal ou octal para binrio, devemos efetuar a operao inversa ao processo de binrio para as bases 8 e 16. Perceba pelos exemplos abaixo como operar nesse processo de converso: a. Converter o nmero CAFE16 para binrio: 1. Como cada dgito hexadecimal corresponde a 4 dgitos binrios, ento deve-se converter parcialmente cada um dos dgitos em hexadecimal: C16 = 1210 = 11002 A16 = 1010 = 10102
30
F16 = 1510 = 11112 E16 = 1410 = 11102 2. Agora s concatenar cada um dos nmeros em binrio, obedecendo posio relativa de cada um deles. O nmero final ser: CAFE16 = 1100.1010.1111.11102 b. Converter o nmero 36218 para binrio: 1. Como cada dgito octal corresponde a 3 dgitos binrios, ento deve-se converter parcialmente cada um dos dgitos em hexadecimal: 38 = 310 = 0112 68 = 610 = 1102 28 = 210 = 0102 18 = 110 = 0012 2. Para finalizar, s concatenar cada um dos nmeros em binrio, obedecendo posio relativa de cada um deles. O nmero final ser: 36218 = 011.110.010.0012
31
Referncias
GONICK, Larry. Introduo Ilustrada Computao. Rio de Janeiro: Ed. Harper & Row do Brasil, 1984. MONTEIRO, Mrio. Introduo Organizao de Computadores. 2 ed. So Paulo: Editora LTC. STALLINGS, W. Arquitetura e Organizao de Computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. TANENBAUM, A. Organizao Estruturada de Computadores. 4. ed. So Paulo: Prentice-Hall, 2006.
Links:
AREASEG (Site de Segurana do Trabalho). Disponvel em: <http://www.areaseg.com/sinais/numeros.html>. Acesso em: 20 mai. 2012. CALCULADORA ONLINE. Disponvel em: <http://www.calculadoraonline.com.br/conversao-bases>. Acesso em: 15 mai. 2012. LINHARES, Robson Ribeiro. Bases numricas. UTPR (Universidade Tecnolgica Federal do Paran). Disponvel em: <http://www.dainf.ct.utfpr.edu.br/~robson/prof/aulas/common/bases. htm#exerc>. Acesso em: 18 mai. 2012. CONVERSO DE BASES. 2008. Disponvel em: <http://bitsebites-sistemasnumericos.blogspot.com.br/2008/05/converso-de-bases.html>. Acesso em: 18 mai. 2012.
32
Desenvolver habilidades para a manipulao e interpretao de nmeros binrios inteiros e reais, tanto positivos quanto negativos. Apresentar o processo aritmtico binrio visando o entendimento de desempenho computacional. Entender o processo de representao e armazenamento de dados numricos nos computadores modernos. Facilitar o entendimento para diferenciao dos tipos de dados de uma linguagem de programao de computadores.
33
HEXADECIMAL 09 89 7F FF
0 Bit com valor 0 indica nmero positivo 1 Bit com valor 1 indica nmero negativo
Observando-se a Tabela 4, verifica-se que, em uma representao binria com n bits, possvel representar nmeros com (n - 1) bits, pois o bit mais significativo representa o sinal, e somente os demais bits representam o valor numrico. Essa forma de representar tem o nome de representao em Sinal e Magnitude (S/M).
A palavra magnitude, nesse contexto, significa o valor absoluto de um nmero. Em outras palavras, refere-se ao mdulo de um nmero, que pode estar representado tanto em decimal quanto em binrio, octal, ou mesmo no formato hexadecimal. Os valores dos dgitos usados para representarem a magnitude de um nmero independem do sinal desse nmero, isto , sendo o nmero positivo ou negativo, a representao da magnitude ser a mesma; o que varia na representao apenas o dgito de sinal. Alm da magnitude do nmero, deve ser avaliado o seu sinal, que sempre determinado pelo seu dgito mais significativo. O valor zero (0) para esse dgito indica que o nmero positivo. Para os nmeros negativos, o valor desse dgito depende da base numrica utilizada na representao do nmero. Como no sistema binrio existem somente dois smbolos disponveis para a formao dos nmeros, quando o valor do bit de sinal for 0 (zero), significa que o nmero positivo e, quando o seu valor for 1, indica um nmero negativo. Tecnicamente falando, o algarismo usado para indicar o sinal de negativo sempre o ltimo smbolo disponvel no sistema numrico. Assim como no sistema binrio o algarismo 1 indica o sinal de negativo, o algarismo 9 usado no sistema decimal para indicar o sinal de negativo.
importante ressaltar que, nos sistemas numricos octal e hexadecimal, os algarismos 7 e F so usados para indicar o sinal de negativo somente quando o nmero em questo no est relacionado com algum nmero em binrio. Por outro lado, havendo uma relao, o sinal obrigatoriamente associado ao dgito mais signicativo do nmero em binrio.
Observe, na Figura 20, que a sequncia binria 0112 equivale ao valor absoluto 3, ou seja, mdulo de 3. Verifique, ainda, as representaes desse mesmo nmero nos sistemas octal e hexadecimal.
35
Faixa de representao
A representao na base b em Sinal e Magnitude com n bits (incluindo o bit de sinal) possui bn representaes, o que permite representar (bn-1) nmeros distintos, uma vez que h duas representaes para o zero: uma para o + 0 e outra para o - 0. Deve-se observar que, no contexto da matemtica, o nmero 0 no tem sinal, contudo, na computao, dada a natureza dos formatos de representaes numricas, devem ser consideradas as duas representaes, ou seja, a positiva e a negativa. A faixa de representao de nmeros na base 2 em Sinal e Magnitude com n bits (incluindo o bit de sinal) possui 2n representaes, sendo possvel apresentar os nmeros de - (2n-1-1) a + (2n-1-1). Dessa forma, o maior valor inteiro possvel ento + (2n-1-1), e o menor valor inteiro (2n-1-1). Veja a aplicao das frmulas pelos exemplos abaixo: 1. Considerando que uma determinada mquina trabalha com a representao de nmeros inteiros no formato S/M de 8 bits, indique, em decimal, o maior e o menor valor que pode ser representado diretamente nessa mquina. Desenvolvimento: Como o menor valor determinado pela equao {- (2n-1-1)}, ento: Menor valor = - (2n-1-1), onde n igual a 8 Menor valor = - (28-1-1) = - (128 -1) = - (127) = - 127 O maior valor determinado pela equao {+ (2n-1-1)}, ento: Maior valor = + (2n-1-1), onde n igual a 8 Maior valor = + (28-1-1) = + (128 -1) = + (127) = + 127 Resposta: menor valor = - 127; maior valor = + 127 2. possvel que em uma mquina que trabalha com a representao de nmeros inteiros no formato S/M em 13 bits represente o resultado da multiplicao dos nmeros 1024 e -4 diretamente? Desenvolvimento: Primeiro deve-se considerar que a palavra diretamente est se referindo possibilidade de representao numrica sem o uso de artifcios matemticos e computacionais que permitem a concatenao de nmeros. Em linhas gerais, um computador pode
36
manipular nmeros que vo alm da sua capacidade mxima de representao. claro que diversos artifcios matemticos e computacionais devem ser empregados, mas eles esto fora do escopo inicial desta disciplina. Num segundo momento, deve-se calcular o limite mnimo de representao numrica na mquina estudada pela equao {- (2n-1-1)}. Ento: Menor valor = - (2n-1-1), onde n igual a 13 Menor valor = - (213-1-1) = - (4096 - 1) = - (4095) = - 4095 Para finalizar, deve-se efetuar a multiplicao dos nmeros envolvidos: 1024 x -4 = - 4096. Resposta: No possvel representar o resultado da multiplicao do nmero 1024 pelo nmero -4 em uma mquina que manipula nmeros de 13 bits no formato S/M. Sobre o processo de manipulao numrica, observe as seguintes consideraes: a. O nmero de bits para a representao determinado no projeto do computador. b. Em situaes nas quais o nmero a ser representado excede a capacidade mxima que uma determinada mquina pode representar, caracterizada um situao denominada overflow. c. A situao denominada underflow tipicamente caracterizada pela impossibilidade de representao de nmeros menores que o menor nmero manipulado diretamente pela mquina. d. Em Sinal e Magnitude, existem duas representaes para o zero.
37
3. Se os sinais forem diferentes: -- verificar qual parcela tem maior magnitude; -- repetir o sinal da maior magnitude; -- subtrair a menor magnitude da maior magnitude. 4. Verificar se o resultado final est dentro dos limites possveis (situaes de underflow e overflow). 5. Apresentar o resultado da operao. Algoritmo da subtrao 1. Processar a subtrao: -- verificar qual parcela tem maior magnitude; -- repetir o sinal da maior magnitude; -- subtrair a menor magnitude da maior magnitude. 2. Verificar se o resultado final est dentro dos limites possveis (situaes de underflow e overflow). 3. Apresentar o resultado da operao. O algoritmo da subtrao o mesmo da soma nos casos em que as parcelas possuem sinais diferentes. Nesses casos, a subtrao feita como se fosse uma soma de dois nmeros que tm sinais diferentes. Observa-se que, no processo aritmtico na representao S/M, existe custo adicional, pois ele exige um grande nmero de comparaes para realizar uma simples soma ou subtrao de dois nmeros inteiros. Os algoritmos acima descritos so mais onerosos de serem realizados no computador, pois resultam em uma baixa eficincia computacional (execuo lenta), tendo em vista a necessidade de comparaes entre os operandos. Outro ponto negativo dessa representao est associado ao fato de que existem duas representaes para o nmero zero, o que torna mais trabalhoso o desenvolvimento de programas numa linguagem de alto nvel, pois, ao comparar o contedo de uma varivel com o zero, devem-se considerar os dois formatos do zero. Assim, uma simples comparao com o nmero zero leva o programador seguinte estrutura: if ( (Cont == 0) or (Cont == +0) ).
38
Diante das dificuldades apresentadas pela representao S/M, os engenheiros passaram a usar a representao complementar de nmeros negativos no projeto de sistemas digitais. claro que ainda existem mquinas que manipulam nmeros no formato S/M, como os processadores de sinais da Motorola (XC5630P) ou da Texas (TMS320C62x).
39
40
-- Considerando que a base 1610 e o nmero 1610 igual ao nmero 1016, ento (base 1) = (1016 1) = F16 e o complemento a (base -1) ser igual a complemento a F. -- Assim, o CF do nmero 951C:
TABELA 5 Representao binrio em C1 com 4 bits Binrio 0000 0001 0010 0011 0100 0101 0110 0111 1111 1110 1101 1100 1011 1010 1001 1000 C1 1111 1110 1101 1100 1011 1010 1001 1000 0000 0001 0010 0011 0100 0101 0110 0111
41
Tal como na representao em Sinal e Magnitude, sempre que em uma representao em complemento o primeiro dgito binrio for 1, o nmero representado negativo, sendo que o dgito mais significativo igual a zero indica que o nmero positivo. Assim, o zero pode ser representado tanto por 00002 quanto por 11112.
Faixa de representao
A representao na base b em complemento a (base -1), com n bits, possui bn representaes, o que permite representar (bn1) valores. O problema de haver duas representaes para o zero no est solucionado com essa representao. A faixa numrica da representao na base 2 no formato complemento a (base-1), com n bits, a mesma que no formato Sinal e Magnitude, podendo ser calculada como 2n valores, variando de -(2n-1-1) a +(2n-1-1), de forma que o maior valor inteiro positivo ser ento +( 2n-1-1), e o menor valor inteiro negativo ser -(2n-1-1). Abaixo, so apresentados exemplos de aplicao das frmulas: 1. Considerando que uma determinada mquina trabalha com a representao de nmeros inteiros no formato C1 com 8 bits, indique em decimal o maior e o menor valor que pode ser representado diretamente nessa mquina. Desenvolvimento: Como o menor valor determinado pela equao {- (2n-1-1)}, ento: Menor valor = - (2n-1-1), onde n igual a 8 Menor valor = - (28-1-1) = - (128 -1) = - (127) = - 127 O maior valor determinado pela equao {+ (2n-1-1)}, ento: Maior valor = + (2n-1-1), onde n igual a 8 Maior valor = + (28-1-1) = + (128 -1) = + (127) = + 127 Resposta: menor valor = - 127; maior valor = +127 2. possvel que uma mquina que trabalha com a representao de nmeros inteiros no formato C1 em 13 bits represente o resultado da multiplicao dos nmeros 1024 e -4 diretamente? Desenvolvimento: Novamente, deve-se considerar primeiro que a palavra diretamente est se referindo possibilidade de representao numrica sem o uso de artifcios matemticos e
42
computacionais que permitem a concatenao de nmeros, j que eles esto fora do escopo inicial desta disciplina. Num segundo momento, deve-se calcular o limite mnimo de representao numrica na mquina estudada pela equao {- (2n-1-1)}. Ento: Menor valor = - (2n-1-1), onde n igual a 13 Menor valor = - (213-1-1) = - (4096 - 1) = - (4095) = - 4095 Para finalizar, deve-se efetuar a multiplicao dos nmeros envolvidos: 1024 x -4 = - 4096. Resposta: No possvel representar o resultado da multiplicao do nmero 1024 pelo nmero -4 em uma mquina que manipula nmeros de 13 bits no formato C1. Assim como no formato S/M, o nmero de bits dos nmeros manipulados em um computador que trabalha com o formato de representao C1 depende exclusivamente do projeto do computador. Situaes de overflow e underflow podem ocorrer em funo dos nmeros manipulados. Apesar de continuar com duas representaes para o nmero zero, a aritmtica desse sistema otimizada, se comparada com a aritmtica praticada no formato S/M, o que torna a representao em C (base-1) mais interessante do que a representao em S/M.
43
somando nmeros negativos, temos como resultado esperado somente um nmero negativo. Caso ocorra um resultado diferente do esperado, o nmero final est sendo considerado um erro de overflow ou underflow, conforme o caso. Analise os exemplos abaixo. 1. Efetue a adio do nmero +32610 com o nmero -13610. A operao dever ser realizada em complemento a (base -1) com 4 algarismos. Desenvolvimento: -- Primeiro passo: determinar (base-1). Considerando que a base 10, ento (base - 1) = (10 1) = 9. -- Segundo passo: normalizar os nmeros para 4 dgitos em C9 e representar no formato complementar, conforme o caso. O nmero positivo representado com um zero na casa mais significativa. Assim, +32610 = 032610 em C9 4 dgitos. Para representar o complemento a (base-1) de um nmero em decimal negativo, calcula-se o complemento a (base-1) do mdulo normalizado do referido nmero. Ento, para -136, temos o mdulo normalizado em 4 dgitos igual a 0136. Na sequncia determina-se o complemento do mdulo obtido no passo anterior. Assim:
44
Resultado: 2. O resultado final da operao aritmtica de adio realizada entre os nmeros +32610 e -13610 0190, ou seja, +190 na interpretao decimal pura. Analisando o resultado final, como estamos subtraindo um nmero negativo de um positivo, pode-se esperar um resultado tanto positivo quanto negativo, dependendo somente da magnitude dos nmeros envolvidos. 3. Efetue a subtrao entre o nmero +32610 e o nmero -13610. A operao deve ser realizada em complemento a (base -1) com 4 algarismos. Desenvolvimento: -- Primeiro passo: avaliar o que deve ser feito. 326 ( 136 ), o que de certa forma igual soma 326 + 136. Em outras palavras, ao calcular o complemento do complemento de um nmero, estamos voltando ao nmero original. Verifique os dois sinais negativos na expresso inicial. -- Segundo passo: normalizar os nmeros para 4 dgitos em C9 e representar no formato complementar, conforme o caso. 4. O nmero positivo representado com um zero na casa mais significativa. Assim, +32610 = 032610 em C9 4 dgitos e o nmero 13610 = 013610 em C9 4 dgitos. Agora, basta somar os nmeros obtidos aps a normalizao, ou seja, 0326 + 0136.
Resultado: O resultado final da operao aritmtica de subtrao entre os nmeros +32610 e -13610 0462, ou seja +462 na interpretao decimal pura.
45
Deve-se observar que, com a representao em complemento a (base-1), os problemas computacionais da representao em S/M foram parcialmente resolvidos. Na verdade, a complexidade inicial da aritmtica foi diminuda consideravelmente, mantendo-se somente o problema das duas representaes para o nmero zero. A maioria dos processadores do mercado possui instrues de compatibilidade com os formatos em complemento a (base -1), ou melhor, em complemento a 1, pois os sistemas computacionais operam com o sistema binrio (base 2).
9738 1 9739
46
Resultado: -- Complemento a 10 do nmero +26110 = 973910 2. Calcule o complemento a base do nmero 951C16, usando 4 algarismos em hexadecimal. Desenvolvimento: -- Convm lembrar mais uma vez que convencionalmente, para a computao, no existe sinal de positivo ou negativo nas representaes em binrio, octal e hexadecimal. Para essa indicao, deve ser considerado o nmero no formato em binrio e avaliar o valor do bit mais significativo (um valor zero indica um nmero positivo e 1 indica um nmero negativo). De toda forma, s processar o clculo do complemento a base diretamente. -- Considerando que a base 1610, ento base -1 = F. -- Para calcular o CF do nmero 951C, no necessrio normalizar, pois o nmero usado j est com 4 dgitos. Assim: -Incrementar uma unidade ao resultado do item anterior:
Resultado: -- Complemento 16 do nmero 951C16 = 6AE416 Na adio realizada para calcular o complemento a base, quando houver o vai 1 do dgito mais significativo, devemos descart-lo, ao contrrio da operao em complemento a (base 1), na qual o excesso incremento ao nmero restante. Essa regra faz parte do procedimento usado para efetuar as operaes aritmticas. Na Figura 21, possvel visualizar o significado da regra.
Adotando o procedimento para clculo dos nmeros negativos em complemento a base, podese verificar que o nmero zero possui somente uma representao, ou seja, a representao
47
positiva; deixa-se a representao negativa para ser usada na representao de mais um nmero negativo. Observe na Tabela 6 a relao de nmeros em complemento 2 (C2) de 4 dgitos e o seu correspondente em decimal.
TABELA 6 Relao de nmeros em C2 4 bits Decimal 0 +1 +2 +3 +4 +5 +6 +7 -8 -7 -6 -5 -4 -3 -2 -1 Binrio C2 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
Faixa de representao
A representao na base b em complemento a base com n bits possui bn representaes, o que permite representar bn valores. Como existe somente uma representao para o zero, h mais um nmero negativo representado. Assim, a faixa numrica da representao na base 2 no formato complemento a base, com n bits, calculada como 2n valores, variando de -(2n-1) a +(2n-1-1), de forma que o maior valor inteiro positivo ser ento +( 2n-1-1), e o menor valor inteiro negativo ser -(2n-1). Abaixo so apresentados exemplos de aplicao das frmulas: 1. Considerando que uma determinada mquina trabalha com a representao de nmeros inteiros no formato C2 com 8 bits, indique em decimal o maior e o menor valor que pode ser representado diretamente nessa mquina.
48
Desenvolvimento: Como o menor valor determinado pela equao {- (2n-1)}, ento: Menor valor = - (2n-1), onde n igual a 8 Menor valor = - (28-1) = - (128 ) = - (128) = - 128 O maior valor determinado pela equao {+ (2n-1-1)}, ento: Maior valor = + (2n-1-1), onde n igual a 8 Maior valor = + (28-1-1) = + (128 -1) = + (127) = + 127 Resposta: menor valor = - 128; maior valor = +127 2. possvel que em uma mquina que trabalha com a representao de nmeros inteiros no formato C2 em 13 bits represente o resultado da multiplicao dos nmeros 1024 e -4 diretamente? Desenvolvimento: Novamente, considera-se, em primeiro lugar, que a palavra diretamente est se referindo possibilidade de representao numrica sem o uso de artifcios matemticos e computacionais que permitem a concatenao de nmeros. Num segundo momento, deve-se calcular o limite mnimo de representao numrica na mquina estudada pela equao {- (2n-1)}. Ento: Menor valor = - (2n-1), onde n igual a 13 Menor valor = - (213-1) = - (4096) = - 4096 Para finalizar, deve-se efetuar a multiplicao dos nmeros envolvidos: 1024 x -4 = - 4096. Resposta: Sim, possvel representar o resultado da multiplicao do nmero 1024 pelo nmero -4, em uma mquina que manipula nmeros de 13 bits no formato C2. O nmero de bits dos nmeros manipulados em um computador que trabalha com o formato de representao C2 depende exclusivamente do projeto do computador. Situaes de overflow e underflow podem ocorrer em funo dos nmeros manipulados. O procedimento de execuo das operaes aritmticas otimizado em relao aos demais formatos de representao, sendo o mais utilizado nos processadores atualmente.
49
50
Soma-se uma unidade ao resultado obtido: 9863 + 1 = 9864 Agora, basta somar os nmeros obtidos aps a normalizao, ou seja, 0326 + 9864. Resultado: O resultado final da operao aritmtica de adio realizada entre os nmeros +32610 e -13610 0190, ou seja, +190 na interpretao decimal pura. Analisando o resultado final, como estamos subtraindo um nmero negativo de um positivo, pode-se esperar um resultado tanto positivo quanto negativo, dependendo somente da magnitude dos nmeros envolvidos. 2. Efetue a subtrao entre o nmero +32610 e o nmero -13610. A operao deve ser realizada em complemento a base com 4 algarismos. Desenvolvimento: -- Primeiro passo: avaliar o que deve ser feito. 326 ( 136 ), o que de certa forma igual soma 326 + 136. Em outras palavras, ao calcular o complemento do complemento de um nmero, estamos voltando ao nmero original. Verifique os dois sinais negativos na expresso inicial. -- Segundo passo: normalizar os nmeros para 4 dgitos em C10 e representar no formato complementar, conforme o caso. O nmero positivo representado com um zero na casa mais significativa. Assim, +32610 = 032610 em C10 4 dgitos e o nmero 13610 = 013610 em C10 4 dgitos. Agora, basta somar os nmeros obtidos aps a normalizao, ou seja, 0326 + 0136.
51
foram resolvidos, mantendo-se somente o inconveniente do desbalanceamento na representao numrica, ou seja, no formato de representao em complemento a base, a quantidade de nmeros positivos representados menor que a de nmeros negativos.
52
conhecido como frao ou mantissa e e um nmero inteiro positivo ou negativo conhecido como expoente. A Figura 22 apresenta alguns exemplos de nmeros expressos nesse formato.
= = =
= = =
Esse mtodo conhecido como representao em ponto flutuante. Nele, a faixa de variao dos nmeros determinada pela quantidade de dgitos do expoente e a preciso determinada pela quantidade de dgitos da mantissa. Como h mais de uma maneira de representar nmeros nessa notao, deve-se escolher uma delas como padro. Para investigar as propriedades desse mtodo de representao de nmeros, considere uma representao R, com uma mantissa de trs dgitos com sinal, na faixa de 0.1 | f | < 1 ou zero e um expoente de dois dgitos com sinal. Tais nmeros tm uma faixa de variao que vai de +0.100 x 10-99 a + 0,999 x 10+99, que se expande por mais ou menos 199 ordens de magnitude, apesar de ser necessrio usar s cinco dgitos e dois sinais para armazenar nmeros expressos nessa notao. Os nmeros em ponto flutuante podem ser usados para representar o sistema de nmeros reais da matemtica, apesar de haver algumas diferenas importantes. A Figura 23 mostra um esquema da reta dos nmeros reais visando apresentar essas diferenas.
-100
100
-100
100
-100
100
-100
100
53
A reta foi dividida em sete regies: Nmeros negativos grandes, menores que 0.999 x 1099 Nmeros negativos entre 0.999 x 1099 e 0.100 x 10-99 Nmeros negativos pequenos, com magnitudes menores que 0.100 x 10-99 Zero Nmeros positivos pequenos, com magnitudes menores que 0.100 x 10-99 Nmeros positivos entre 0.100 x 10-99 e 0.999 x 1099 Nmeros positivos grandes, maiores que 0.999 x 1099 A principal diferena entre os nmeros representados com mantissas de trs dgitos e expoentes de dois e os nmeros reais que a primeira representao no pode ser usada para expressar nmeros nas regies 1, 3, 5, ou 7. Se o resultado de uma operao gerar um nmero na regio 1 ou 7, vai ocorrer um erro de overflow. A razo dessa incorreo a natureza finita da representao desses nmeros. Da mesma maneira, um resultado nas regies 3 e 5 vai gerar um erro de underflow. Outra diferena importante entre os nmeros em ponto flutuante e os nmeros reais a sua densidade. Entre dois nmeros reais quaisquer, existe outro nmero real, no importa quanto um est prximo do outro, pois os nmeros reais variam de forma contnua. J os nmeros em ponto flutuante variam de forma discreta, ou seja, existe uma determinada quantidade de nmeros em ponto flutuante que podem ser representados. Se o resultado de uma operao no puder ser expresso na representao usada, ser efetuado um arredondamento. Essa operao consiste em escolher o nmero mais prximo do resultado esperado. Em outras palavras, usando-se a representao em ponto flutuante, existe um erro relativo introduzido pelo arredondamento, tanto para nmeros grandes quanto para nmeros pequenos.
54
a no normalizada, pois garante somente uma forma de representar o nmero. Alm disso, a combinao do 1 implcito (parte inteira em binrio), do ponto binrio implcito e do 23 ou 52 bits chamada de significante, em vez de mantissa. Usando o conceito de significante e visando garantir maior eficincia computacional, a parte inteira do nmero, bem como o ponto binrio, no so armazenados de acordo com o formato IEEE 754. Na Figura 24, so apresentados os formatos em preciso simples e dupla. Perceba que o somatrio da quantidade de bits de cada campo que define a preciso da representao.
Bits Bits Sinal Bits Sinal 1 8 Expoente 23 Significante (a) 1 11 Expoente 52 Significante (b)
FIGURA 24: Formatos IEEE 754. (a) Preciso simples. (b) Preciso dupla
As caractersticas numricas dos nmeros em ponto flutuante expressos no formato IEEE 754 so apresentadas na Tabela 7. Perceba que o expoente representado em excesso, de 127 ou 1023, conforme o caso. Esse tipo de representao usado para no haver necessidade de armazenamento de nmeros negativos no expoente, pois, se desejamos armazenar o valor -127 como expoente de um nmero em ponto flutuante, devemos adicionar 127, o que resultar no valor zero. Expoente menor que -127 ou maior que +127 no possvel armazenar usando o padro IEEE 754. Outra considerao sobre a Tabela 7 sobre o valor do bit de sinal do nmero. Quando o valor desse bit for zero, o nmero positivo; se o valor for 1, o nmero negativo.
TABELA 7 Caractersticas do formato IEEE 754 tem Bits do campo de sinal Bits do campo de expoente Bits do campo da mantissa / significante Nmero total de bits Sistema de representao do expoente Faixa de variao do expoente Preciso simples 1 8 23 32 Excesso 127 -126 a +127 Preciso dupla 1 11 52 64 Excesso 1023 -1022 a +1023
55
O padro IEEE 754 define alguns outros tipos numricos para atender situaes nas quais os nmeros no esto normalizados ou mesmo indicar situaes crticas de operaes aritmticas. O formato especial chamado NaN (Not a Number) indica, por exemplo, o resultado de infinito dividido por infinito, que indefinido. Veja a relao dos formatos IEEE 754 na Tabela 8.
Exemplo de representao do nmero 0,5 nos formatos de preciso simples e dupla. Desenvolvimento: 1. Converter o nmero 0,5 para binrio. Usando o processo descrito na Unidade 2, temos que 0,5 = 0,12. 2. Normalizar o nmero deixando a parte inteira valendo 1, encontrando o significante. Ento, 0,5 normalizado na base 2 igual a 1,0 x 2-1 (significante = 0). 3. Calcular o valor do expoente com excesso e converter para binrio 8 ou 11 bits: a. Para preciso simples (8 bits) + 127: -1 + 127 = 126 Expoente = 011111102 b. Para preciso dupla (11 bits) + 1023: -1 + 1023 = 1022 Expoente = 011111111102 4. Definir o sinal. Como o nmero 0,5 positivo, sinal = 0 5. Montar o nmero no padro IEEE, concatenar as seguintes partes: sinal+expoente+significante:
56
a. Preciso simples: 0+01111110+00000000000000000000000 b. Preciso dupla: 0+01111111110+00000000000000000000000000000000000000000000000 6. Como trabalhoso manipular nmeros em binrio, apresentar a soluo em hexadecimal. Ento: a. Preciso simples: 0011.1111.0000.0000.0000.0000.0000.00002 = 3F00000016 b. Preciso dupla: 0011.1111.1110.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000.0000. 00002 = 3FE000000000000016 Deve-se registrar que, adotando o procedimento inverso, possvel converter do formato IEEE para decimal. Nesta unidade foram apresentados formatos de representaes para nmeros positivos e negativos, tanto inteiros quanto reais. A escolha do formato usado em um determinado processador prerrogativa dos engenheiros projetistas, quando esto definindo a arquitetura da mquina. Deve-se observar que os formatos apresentados esto intimamente associados aos tipos de dados das linguagens de programao. Tomando a linguagem C como exemplo, o tipo de int est associado ao formato de representao complemento a base. Como o computador trabalha com o sistema binrio, o tipo int representa nmeros no formato C2 em 16 bits. Ento, possvel explicar por que o maior nmero armazenado em uma varivel desse tipo +32767 e o menor -32768. Com base nos contedos apresentados, tambm possvel entender mensagens de erros do tipo NaN error, geralmente apresentadas em aplicaes Windows. Quando isso acontece, certamente o resultado de uma operao resultou em um nmero no identificado pela linguagem, ocasionando a mensagem e, muito provavelmente, a parada do sistema.
57
Referncias
STALLINGS, W. Arquitetura e Organizao de Computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. TANENBAUM, A. Organizao Estruturada de Computadores. 4. ed. So Paulo:
Prentice-Hall, 2006.
58
Conhecer e aplicar as propriedades da lgebra booliana no modelamento matemtico de problemas computacionais; desenvolver habilidades para solucionar problemas matemticos usando circuitos lgicos; interpretar o funcionamento de circuitos digitais; reconhecer e construir blocos lgicos usados na Organizao de Computadores.
Circuitos lgicos
Todos os dispositivos digitais so implementados por circuitos eletrnicos denominados circuitos digitais. Como os circuitos eletrnicos so mais complexos e, portanto, mais difceis de serem analisados e entendidos por pessoas que no possuem uma formao especfica em eletrnica, comum encontrar representaes grficas de circuitos digitais organizadas em diagramas de blocos lgicos, estruturados de forma que cada um dos blocos apresenta uma funcionalidade, sendo, na maioria das vezes, diferente dos demais blocos. Deve-se considerar, ainda, que cada bloco est projetado para receber sinais de entrada, process-los e apresentar os resultados nos seus terminais de sada. A maneira como um circuito digital responde a um estmulo de entrada denominada de lgica do circuito; da surge o nome circuito lgico. Matematicamente, a lgica do circuito totalmente baseada na lgebra booliana, pela qual possvel expressar a relao entre as entradas e sadas de um circuito lgico. De acordo com as bases da lgebra booliana, os resultados de uma expresso lgica, bem como o valor de cada uma das variveis que formam uma expresso lgica, podem assumir apenas um de dois valores distintos, por exemplo, falso ou verdadeiro, ligado ou desligado, sendo o mais comum 0 ou 1. Na prtica, esses valores lgicos estaro associados a grandezas fsicas como a tenso ou a corrente eltrica. Por meio da Figura 25, possvel visualizar as diferenas entre o circuito digital e a representao do bloco lgico de um circuito somador de 2 bits. Note que toda a complexidade da organizao do circuito eletrnico foi abstrada a partir do uso de smbolos grficos para descrever a
59
funcionalidade do bloco. Veja pelo sinal de adio e pelos nomes das linhas de entrada e sada, bem como pela equao matemtica que define o comportamento lgico do bloco.
+ 5v + 5v + 5v
1130 k
1,6 k
4 k
A B
Q4 Q2
S0
Q3 1 k
A0 B0
S0 C0
Porta lgica
O termo porta surge da necessidade de controlar a passagem de sinais lgicos ao longo do circuito. O controle efetuado pelas operaes de habilitar/desabilitar, na medida em que cada porta lgica pode ser utilizada para controlar a passagem de sinal lgico da entrada para a sada. O valor/nvel lgico da entrada de controle determina se o sinal de entrada est habilitado a alcanar a sada ou impedido (desabilitado) de alcan-la. Admite-se que as portas lgicas tambm so dispositivos, ou circuitos lgicos, que operam um ou mais sinais lgicos de entrada para produzir uma sada, que depende da funo implantada no circuito. Tais dispositivos implementam fisicamente as funes da lgebra booliana (soma, produto e complementao).
60
Nvel lgico
O nvel lgico, tambm denominado valor lgico, que cada uma das entradas e sadas de um bloco ou porta lgica pode assumir, bem como os valores das variveis das expresses boolianas, o 0 ou o 1, que no representam necessariamente os nmeros, mas os estados possveis na lgica booliana. Nos circuitos digitais, esses nveis so representados, na maioria das vezes, pelo nvel de tenso eltrica. A Figura 26 apresenta um grfico associando a tenso do circuito eltrico com o nvel lgico adotado para os circuitos digitais implementados usando a tecnologia TTL (Transistor-Transistor Logic) padro. De acordo com a tecnologia de implementao, a relao nvel lgico e tenso tende a mudar. As diferentes tecnologias de implementao no so excludentes e nem mesmo concorrentes. Deve-se considerar que so complementares para circuitos lgicos que necessitam de alta velocidade de comutao dos sinais lgicos. Ou seja, para portas lgicas mais rpidas, deve ser usada uma tecnologia. Por outro lado, se o consumo de energia eltrica mais importante no projeto de hardware do dispositivo digital, emprega-se outra tecnologia.
5v
Nvel lgico 1
Expresses boolianas
Como mencionado anteriormente, o comportamento dos circuitos lgicos descrito aplicandose as regras da lgebra booliana, que, por sua vez, fundamentada por expresses lgicas ou
61
expresses boolianas. Cada expresso formada por um conjunto de variveis lgicas e de operadores lgicos. Como regra bsica, o valor que cada varivel pode armazenar somente um, de um grupo de dois valores possveis. Por conveno, sero utilizados somente os valores 0 e 1, mas podem ser quaisquer outros dois valores distintos. Por outro lado, os operadores boolianos definem as regras de relacionamento entre as variveis, e so divididos em classes, conforme sua complexidade. A classe denominada de operadores bsicos caracterizada pela implementao em uma nica porta lgica. J a classe chamada de operadores compostos formada por operadores implementados por duas ou mais portas lgicas. Ainda sobre operadores, eles tambm se caracterizam pelo nmero de variveis que esto associadas na operao, podendo ser chamados de unrios, quando admitem somente uma varivel na operao, e binrios, na medida em que admitem duas variveis para a operao.
Tabela 9: Apresentao do operador NOT Tabela verdade Representao grfica Expresso Booliana
62
Na Tabela 10 so apresentadas as caractersticas do operador OR. Como pode ser observado pela tabela verdade da operao, o resultado 1 quando o valor de pelo menos uma varivel de entrada for tambm 1. Deve-se considerar que as variveis A e B determinam as condies iniciais de execuo da operao, e a varivel X armazena o resultado final da operao.
Representao grfica
Expresso Booliana
O operador AND define uma operao na qual o resultado 1 s ser possvel quando o valor de todas as variveis de entrada for igual a 1. Observe na Tabela 11 as caractersticas do operador AND. Assim como usado nos demais operadores, a varivel X est associada ao resultado da operao, e as demais variveis esto associadas s variveis que determinam a condio inicial da operao.
Representao grfica
Expresso Booliana
O circuito lgico de qualquer dispositivo digital pode ser descrito usando-se as trs operaes boolianas bsicas apresentadas. Com a utilizao das expresses boolianas de cada porta lgica, possvel determinar a expresso lgica geral da sada de um circuito lgico f o r m a d o por mais operadores lgicos. Contudo, deve-se considerar a precedncia da o p e r a o AND sobre a operao OR nas expresses algbricas, a menos que existam parnteses na
63
expresso definindo a ordem contrria. Nos exemplos a seguir, so apresentadas as combinaes dos operadores lgicos AND e OR e como tratar os casos de prioridades entre eles.
Exemplos: a. Considere a expresso lgica X = A + B . C. Nessa expresso, a operao AND tem precedncia sobre a operao OR, representada pela soma lgica. Assim, o circuito/ diagrama lgico formado pela expresso igual ao apresentado pela Figura 27.
A A B
Figura 27: Diagrama lgico da expresso X = A + B . C
x=A+B.C B.C
b. Neste exemplo, a expresso considerada X = (A + B) . C. Como existem os parnteses, na operao OR deve-se realizar primeiro essa operao e depois a operao AND. Pela figura 28 possvel avaliar o diagrama lgico correspondente expresso dada.
A B
A+B C
x = (A + B) . C
Ainda sobre a combinao dos operadores bsicos, veja, na Figura 29, mais exemplos da combinao usando-se o operador NOT.
64
A x=A+B B
A B
A+B
x=A+B
Figura 30: Vises internas de um circuito integrado Fonte: WIDMER; TOCCI, 2011.
65
O operador NOR funciona de forma complementar ao operador OR, ou seja, para que a sada dessa porta seja 1, necessrio que todas as variveis de entrada sejam 0. Na Tabela 12 so apresentadas as caractersticas do operador NOR.
Representao grfica
Expresso Booliana
O operador NAND complementar ao operador AND, apresentando em sua sada o valor lgico 1, sempre que pelo menos uma varivel de entrada possua o valor lgico 0. Conhea mais caractersticas dessa operao pela Tabela 13.
Representao grfica
Expresso Booliana
66
Circuitos combinacionais
So circuitos que apresentam os resultados de sada to logo os valores de entrada sejam alterados; no possuem referncia de tempo, sendo denominados circuitos assncronos. Assim, medida que os valores de entrada mudam, automaticamente os valores de sada dos circuitos lgicos mudam, refletindo imediatamente as condies de entrada. Existem diversos exemplos de circuitos combinacionais, como os circuitos lgicos apresentados pelas Figuras 27, 28 e 29. Outro exemplo importante, dada sua constante utilizao em projetos e diagramas lgicos, so os circuitos multiplexadores, ou simplesmente MUX. Os multiplexadores possuem diversas aplicaes em sistemas digitais de todos os tipos, tais como: Seleo de Dados Roteamento de Dados Sequenciamento de Operaes Converses Paralelo-Srie O MUX um circuito lgico capaz de trabalhar com n fontes de dados, sendo que, atravs de outro conjunto de variveis de entrada, possvel selecionar uma das n fontes de dados de entrada e transmitir o dado selecionado para um nico canal de sada. Ou seja, ele funciona como um seletor de dados, transferindo um dado de uma entrada E para a sada S de acordo com as entradas de controle C. Veja pela Figura 31 o diagrama esquemtico do MUX.
ENTRADA
Os circuitos lgicos que efetuam a operao inversa multiplexao so os demultiplexadores. Assim, os demultiplexadores so capazes de selecionar uma sada para o sinal de entrada atravs das entradas de controle. Observe pela Figura 32.
ENTRADA
CONTROLE
ENTRADA
SADA
CONTROLE
SADA
SADA
CONTROLE
67
SADA
ENTRADA
CONTROLE
Circuitos sequenciais
So circuitos lgicos que apresentam ou atualizam os valores de sada de um determinado bloco, assim que uma entrada especial, denominada entrada de clock, estiver mudando o seu valor, seja de 1 para 0 ou de 0 para 1, tudo conforme o projeto de hardware. So circuitos classificados como sncronos, ou seja, possuem uma forte relao/referncia de tempo e sincronismo entre os diversos blocos. Caracterizam-se por necessitarem de um circuito analgico especial, chamado de circuito de clock. Esse circuito especial est presente em todos os computadores digitais e responsvel por gerar um sinal peridico regular, denominado sinal de clock, distribudo por toda a parte eletrnica e usado como referncia de tempo para os circuitos sequenciais, promovendo, de certa forma, o sincronismo dos diversos blocos lgicos. Atualmente o valor do sinal de clock usado como referncia para o a divulgao dos produtos no comrcio de computadores. O sinal de clock um sinal eltrico que varia em intervalos de tempo regulares e peridicos. Possui as seguintes caractersticas: Amplitude: Propriedade que define/indica o valor mximo da tenso ou corrente eltrica de um sinal peridico regular, normalmente expressa em volt. Frequncia (F): Grandeza eltrica que indica a velocidade na qual o sinal peridico se repete por unidade de tempo, sendo expressa em Hertz (Hz), ou seja, vezes por segundo.
68
Perodo (T): Intervalo de tempo de durao de um ciclo, expresso em segundos. Relao matemtica entre frequncia (F) e perodo (T): F = 1 / T. Ciclo: a caracterstica de um sinal peridico, a qual determina o incio da repetio desse sinal. Os termos tamanho do ciclo e perodo possuem o mesmo significado, ou seja, o tempo que dura um ciclo. Pela equao matemtica, pode-se concluir que a frequncia inversamente proporcional ao perodo. Veja pelo exemplo abaixo: Considerando que a frequncia de clock de um determinado computador de 800MHz, determine o seu perodo de clock.
Como M = 106
Os contedos apresentados nesta unidade no esgotam o tema sistemas digitais, mais especificamente circuitos lgicos. O que foi trabalhado, entretanto, servir de base para o entendimento das demais unidades e seus respectivos contedos. Se voc se interessar pelo tema, busque mais detalhes nas obras indicadas nas referncias.
69
Referncias
STALLINGS, W. Arquitetura e organizao de computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. TANENBAUM, A. Organizao estruturada de computadores. 4. ed. So Paulo:
Prentice Hall, 2006. WIDMER, Neal S.; TOCCI, Ronald J. Sistemas Digitais: princpios e aplicaes. 11. ed. So Paulo: Prentice Hall, 2011.
70
Compreender detalhes tcnicos das diferentes implementaes de computadores digitais; identificar os elementos que compem uma Unidade Central de Processamento (UCP); compreender as relaes entre os blocos internos da UCP e o seu funcionamento; conhecer o ciclo de busca de instrues; interpretar o processo de execuo de uma instruo.
Modelo de mquinas
No projeto e na construo de computadores digitais, so considerados basicamente dois modelos ou arquiteturas de referncia: o modelo de Von Neumann e o modelo Harward. No primeiro, observa-se o uso de um nico canal de comunicao entre os blocos lgicos que compem a mquina. O acesso a esse canal compartilhado entre os blocos. No segundo, a unidade de memria subdividida em funo do tipo de dado que armazenado, forando um acesso diferenciado por parte da UCP (Unidade Central de Processamento). Essas organizaes podem ser visualizadas pela Figura 33.
Von Neumann
Harvard
UCP / CPU
Memria Principal
CPU
Memria de Instrues
A diferena funcional entre os modelos apresentados est associada forma como a UCP troca dados com os demais blocos lgicos que compem o sistema, o que impacta diretamente o custo e o desempenho geral do sistema, conforme j mencionado na Unidade 1. Contudo,
71
independentemente do modelo implementado, todos os computadores funcionam de forma similar, exigindo os mesmos recursos, que so distribudos por trs grandes blocos lgicos: Unidade Central de Processamento (UCP), memria principal e dispositivos de entrada e sada (I/O). Tomando como referncia a classe de computadores pessoais, genericamente chamados de PC, os blocos lgicos possuem uma denominao particular: o bloco que representa a memria principal chamado de Ponte Norte; o bloco responsvel pelo acesso e controle dos dispositivos de entrada e sada chamando de Ponte Sul; por ltimo, mas no menos importante, a UCP , que representada fisicamente pelo Processador. A ttulo de curiosidade, no mercado, quando buscamos identificar as caractersticas da placa me de um PC, na verdade estamos nos referindo s caractersticas dos blocos memria principal e Dispositivos de Entrada e Sada, comumente chamados de chipset. O processador, ou tecnicamente falando, a UCP , pode ser adquirida conforme a nossa necessidade e disponibilidade financeira. Deve-se observar que o desempenho de um sistema computacional no est associado somente ao modelo e tipo de UCP , mas s caractersticas tcnicas dos trs grande blocos de um computador. No mercado existem dois grandes fornecedores de UCP para computadores pessoais: a Intel e a AMD (Advanced Micro Devices). Em termos arquiteturais, os processadores para PC desses fabricantes so compatveis, diferindo somente quanto implementao da arquitetura. Historicamente, a Intel sempre esteve na vanguarda tecnolgica para processadores de PCs, o que se justificou por muitos anos devido parceria firmada com a IBM, no final dos anos 1970, para a produo exclusiva de processadores para os seus computadores. Atualmente, o status de vanguarda tecnolgica alterna com a AMD, tendo em vista que a empresa mudou sua estratgia comercial e tecnolgica, deixando de efetuar clonagens dos processadores Intel, e passou a investir pesadamente em pesquisas para a implementao de sua verso da Arquitetura x86. Como caracterstica da implementao de processadores da AMD, a parte de controle da memria principal est integrada na mesma pastilha (chip) do processador (UCP), o que, de certa forma, proporciona melhoria no desempenho geral do sistema e diminuio do custo da placa me, fato que chamou a ateno da Intel, que passou a produzir processadores com a mesma caracterstica, como o caso dos modernos processadores das sries i5 e i7. Em linhas gerais, todos os computadores so compostos pelos trs blocos lgicos j mencionados. A seguir sero apresentadas as funcionalidades bsicas de cada um dos blocos, com destaque especial para a UCP , tendo em vista que os blocos referentes ao controle dos dispositivos de entrada e sada, bem como a unidade de memria, tm sua implementao padronizada.
72
73
A palavra RAM o acrnimo de Random Access Memory, ou seja, memria de acesso aleatrio. So memrias que permitem o acesso a qualquer dado armazenado, na ordem desejada, diferentemente dos primeiros modelos de memria, nos quais o acesso era sequencial, ou seja, para acessar o ltimo dado armazenado, era necessrio efetuar a leitura de todos os outros dados armazenados at chegar posio do dado requerido. Na verdade, as memrias do tipo ROM (Read Only Memory ou memria somente para leitura) tambm possuem acesso aleatrio. Atualmente a distino entre RAM e ROM diz respeito ao tempo de reteno do dado armazenado. As memrias do tipo RAM so caracterizadas pela volatilidade do contedo armazenado, ou seja, os dados armazenados nesse tipo de memria no so perenes, esto vulnerveis ao fornecimento de energia eltrica ao mdulo de memria. Todas as vezes que a energia do bloco desligada, os dados por ela armazenados so perdidos, necessitando ser reescritos todas as vezes que a energia for restabelecida. Por outro lado, as memrias do tipo ROM no perdem facilmente os dados armazenados, mas necessitam de um processo tcnico especial para a gravao de seus dados. Nesse tipo de memria, mesmo com a falta de energia eltrica por um perodo muito longo por exemplo, 30 anos , os dados so mantidos. Como se pode constatar pelo uso de um computador convencional, quando o usurio edita um texto e no o salva, o contedo trabalhado perdido sempre que houver falta de energia eltrica. Por outro lado, todas as vezes que ligamos um computador, ele executa a contagem e testes de memria, a inicializao de alguns perifricos e, por fim, a carga do sistema operacional. Na verdade estamos, no primeiro exemplo, usando a memria RAM e, no segundo, a memria ROM.
74
0 1 2
n-1
A clula a menor unidade de memria enderevel, sendo que uma clula pode armazenar qualquer uma das 2m possveis combinaes diferentes dos seus m bits. Ento, os m bits de uma clula so acessados simultaneamente. A varivel m pode ser qualquer nmero inteiro, mas, nos ltimos anos, os fabricantes padronizaram um tamanho de 8 bits (1 byte). A maioria das instrues e dados manipulados em um computador so maiores que 1 byte, o que, de certa forma, sugere a necessidade de usar mais de uma clula de memria para armazenar a mesma instruo ou dado. Ento, para adequar o modelo de armazenamento ao modelo de execuo, os bytes de memria so agrupados em unidades mltiplas de bytes, que so chamadas de Palavras. Os computadores, por sua vez, so conhecidos pela forma como ordenam as palavras na memria principal. Quando a ordenao dos bytes de uma palavra feita da parte mais significativa para a menos significativa, temos a chamada ordenao big endian. De outra forma, quando primeiro efetuado o armazenamento da parte menos significativa e depois o da parte mais significativa, temos a ordenao little endian. Cabe destacar que no existe problema em armazenar num ou noutro formato. O problema est no processo de comunicao entre uma mquina big endian e uma little endian. Veja pela Figura 35 a diferena entre os dois formatos no armazenamento da palavra 3CB416.
75
0 1 2
3C B4 ?
n-1
BIG ENDIAN
0 1 2
B4 3C ?
n-1
LITTLE ENDIAN
76
Interpretao de instrues: como no poderia ser diferente, existem internamente na UCP circuitos digitais responsveis por decodificar e interpretar o que deve ser efetuado em cada instruo. Ainda faz parte do processo de interpretao de instrues definir quais dados fazem parte da instruo e como acess-los. Busca de dados: considerando que os dados esto armazenados na memria principal e que os circuitos de interpretao de instrues j localizaram o endereo de cada dado, um outro circuito lgico adicional capaz de efetuar a busca dos dados que fazem parte de uma determinada instruo na memria principal, tecnicamente chamados de operandos. Eles podem ser classificados como operando fonte e operando destino. Por exemplo, a operao de adio de dois nmeros suscita a existncia de dois operandos fontes, que so as parcelas da soma, e um operando destino, o qual dever armazenar o resultado da operao. Processar dados: como no poderia ser diferente, a principal operao efetuada pela UCP sobre os dados (operandos) de uma determinada operao. Todas as operaes efetuadas so de ordem matemtica, podendo ser aritmtica, lgica, movimentao ou deslocamento de bits. Cada uma dessas instrues ser apresentada formalmente na prxima unidade. Escrever dados: os resultados de cada operao devero ser armazenados em um local especfico (posio de memria), conforme estabelecido em cada instruo. O circuito lgico especializado na busca de dados possui uma segunda funcionalidade, que permite o acesso memria principal para a escrita dos dados. As operaes de leitura de dados dessa unidade fazem somente uma cpia do contedo da clula de memria. Por outro lado, a operao de escrita altera instantaneamente o contedo da clula, sobrepondo-se ao valor anteriormente armazenado. Ainda sobre as caractersticas da UCP , deve-se destacar que ela possui um espao de trabalho temporrio, como rea de rascunho, para a execuo das instrues chamadas de registradores. O nmero e a funo de cada registrador existente em uma mquina dependem do projeto dessa mquina e, mais especificamente, de sua arquitetura, que varia de processador para processador. O registrador pode ser comparado com uma clula de memria, porm localizada internamente na UCP , com baixa latncia na resposta a solicitaes de leitura e escrita, diferentemente da memria principal, na qual existe uma demora para a resposta s operaes de leitura e escrita. Uma das maiores decises a serem tomadas no projeto de uma UCP est relacionada com o nmero e a funo de cada um dos registradores. Como os registradores so unidades de armazenamento implementadas internamente UCP e considerando uma hierarquia do sistema
77
de memria, os registradores ocupam o topo da pirmide hierrquica. Convm destacar que o custo de implementao de cada registrador elevadssimo se comparado com o custo de implementao de cada clula de memria. Os registradores, de acordo com sua especialidade, so classificados em: Registradores de propsito geral (RPG): todos os registradores que podem ser usados para qualquer finalidade que envolva uma operao executada na UCP por exemplo, operando fonte, operando destino ou como unidade de rascunho para a movimentao de dados. Registradores de propsito especfico (RPE): como o prprio nome indica, esses registradores no podem ser usados em qualquer operao de forma arbitrria. Eles tm sua funcionalidade definida no projeto da mquina e no podem ser mudados dinamicamente. O uso dessa classe de registradores torna as operaes da UCP mais simples e rpidas, se comparado com o uso de registradores de propsito geral. O uso de registradores de propsito geral aumenta a flexibilidade e as opes para os programadores desenvolverem seus programas, podendo significar um aumento do tamanho do programa e da complexidade das instrues disponveis em uma determinada UCP . Por outro lado, a implementao de unidades centrais de processamento somente com registradores especializados torna as instrues mais rpidas e menos flexveis, do ponto de vista do programador, com um custo operacional e de implementao mais baixo do que o das UCP baseadas em RPG. O projeto ideal de uma mquina equilibra o uso desses registradores com base nas caractersticas principais desejveis para a nova UCP . Na verdade, o projeto de computadores que visa alto desempenho computacional faz uso intenso de RPE e, por outro l a d o , computadores de propsito geral podem fazer uso somente de registradores de propsito geral, o que compromete o desempenho da mquina. O nmero de registradores e o tamanho das palavras manipuladas pela UCP so decises tomadas pelos projetistas ainda na fase de levantamento de requisitos. So exemplos de registradores usados nos projetos de UCP: Registrador de dados, normalmente usado como operando, fonte ou destino, de operaes aritmticas ou lgicas. Registrador de endereo, que, como o prprio nome sugere, usado para facilitar o acesso da UCP memria principal, armazenando endereo de dados ou instrues. Registrador de status (SR), que indica a condio atual da mquina. Em todas as
78
operaes executadas pela UCP , so registradas as condies finais de execuo, ou seja, se uma operao de adio executada, o resultado da operao armazenado no operando destino, e as condies finais da operao so registradas pelo registrador de status. As condies finais podem indicar se o resultado da operao foi zero, se existe uma condio de overflow ou underflow, se o nmero final par ou mpar, positivo ou negativo, entre outras informaes que o arquiteto do computador quiser registrar. Esse registrador usado em operaes que exigem a tomada de deciso quanto a alterar o fluxo de execuo de um determinado programa. Registradores no visveis aos usurios e/ou programadores. Para que a UCP mantenha funcionamento perfeito aps a execuo de cada instruo, devem ser disponibilizadas internamente unidades de memria adicional, que no podem ser acessadas diretamente pelos programadores ou usurios do sistema computacional. Como exemplo dessa classe de registradores, pode-se destacar o Registrador de Instrues (IR), registradores de endereos como o Registrador de Retorno (RR), usado para permitir a volta do programa aps a chamada a uma funo, procedimento ou interrupo , ou mesmo o registrador de pilha (SP stack pointer). Os mecanismos de pilha sero apresentados na unidade referente s arquiteturas do conjunto de instrues. Acumuladores so registradores especiais normalmente usados como operando destino das operaes aritmticas ou lgicas. A implementao dos acumuladores depende exclusivamente da arquitetura usada no projeto da UCP . Contadores de programa (PC) so registradores de uso especfico, e seu contedo controlado diretamente pelo hardware, podendo existir situaes especficas que requeiram a alterao de seu contedo dinamicamente atravs de software, por exemplo, instrues de controle de fluxo do programa, para implementar uma estrutura de repetio ou mesmo uma estrutura condicional. Esse um tipo especial de registrador de endereo, que sempre indica qual ser a prxima instruo a ser executada. Quando uma mquina inicializada (ligada) ou reinicializada atravs do boto de reset, o contedo desse registrador zerado e, assim, ele aponta para a instruo da posio zero de memria. O processo de zerar o valor do PC no momento em que ele ligado tecnicamente chamado cold boot ou hard reset. J o processo que usa um boto especfico denominado warm boot ou soft reset. claro que, em algumas mquinas, o valor de inicializao desse registrador poder ser diferente de zero, mas, na verdade, o efeito operacional o mesmo, ou seja, inicializar uma nova instncia de execuo de instrues.
79
Registradores de instrues (IR), que foram projetados exclusivamente para armazenar a instruo que est sendo executada pela UCP e permitir a decodificao da instruo pelo bloco lgico responsvel. Lembre-se de que a instruo em execuo foi buscada na memria principal em um momento anterior ao incio da sua execuo. Os registradores so elementos muito importantes para a formao de unidade de processamento, contudo existem outros blocos lgicos que devem ser projetados para organizar o uso e implementar as funes de cada registrador.
80
1 Operando
OPERANDO FONTE 1
ULA
2 Operando
OPERANDO FONTE 2
Operao
FIGURA 36: Unidade Lgica e Aritmtica (ULA)
Controle interno
SP RR UCON
PC IR SR
Dados
81
Funcionamento da UCP
Qualquer que seja a implementao de Unidade Central de Processamento (UCP), que tambm pode ser chamada de CPU ou mesmo Processador, dependendo da literatura estudada, ela possui o modus operandi igual, estabelecido em trs ciclos bem definidos e executados sequencialmente. Quando uma mquina inicializada, a frio ou a quente cold boot, warm boot respectivamente , ela sempre vai executar o ciclo de busca de uma instruo, independentemente do modelo, marca e tipo de computador. Aps a busca da instruo, iniciado o processo de decodificao e interpretao, bem como so estabelecidas todas as condies necessrias para a execuo da referida instruo. Na sequncia, iniciado o processo de execuo, que normalmente utiliza a ULA, finalizando com a escrita do resultado no operando destino da instruo executada. Aps o encerramento da escrita do resultado, a UCON inicia automaticamente um novo ciclo de busca de instruo, a menos que a ltima instruo executada determine a parada da UCP . Um exemplo tpico desse tipo de instruo a HALT, que implementada pela maioria dos processadores. A nica forma iniciar um novo ciclo de busca de instrues atravs do soft reset ou hard reset. Veja os detalhes sobre os ciclos de trabalho de uma UCP:
82
83
Referncias
STALLINGS, W. Arquitetura e organizao de computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. TANENBAUM, A. Organizao estruturada de computadores. 4. ed. So Paulo: Prentice-Hall, 2006.
84
85
O que devemos entender nessa situao que, independentemente da arquitetura, a execuo efetiva de cada uma das instrues que formam o nvel ISA demanda tempos diferentes para a sua concluso. Como as UCPs so constitudas por vrios blocos lgicos, implementando funes diversas e necessrias ao processamento de instrues, deve haver sincronismo para a troca de dados entre os blocos, evitando-se que eles trabalhem com dados contaminados, ou seja, com valores que ainda no fazem parte da instruo corrente. A Figura 45 ilustra uma situao na qual a falta de sincronismo entre os blocos pode ocasionar um erro no armazenamento do resultado. Considere a possibilidade de a ULA efetuar uma soma, por exemplo, 5+3, enquanto o bloco da UCON, responsvel pela busca de operando, ainda est carregando o segundo operando na entrada da ULA e, no mesmo momento, o bloco da UCON projetado para armazenamento de resultados j est processando a escrita do dado, na memria principal, de um valor qualquer que est presente na sada da ULA. Se as mquinas digitais trabalhassem dessa forma, no serviriam para nada.
ULA
5
Grava: 10 L: 3
UCON
Dados
Para evitar esse e outros tipos de erros, os blocos lgicos dos computadores trabalham com um tipo de circuito lgico que necessita de uma referncia de tempo para estabelecer o sincronismo entre os blocos. So os chamados Circuitos Combinacionais, apresentados na Unidade 4. Sua referncia de tempo determinada por sinal especial chamado de Sinal de Clock. O perodo
86
desse sinal est intimamente associado ao tempo de processamento de cada instruo, que pode ser chamando de Ciclo de Mquina, por ser um sinal que eletricamente estabelece um padro de comportamento da mquina. Fica ento um dilema: qual deve ser o tamanho do ciclo, ou perodo do Sinal de Clock? Para responder a essa pergunta, os projetistas de hardware usam dois critrios distintos e excludentes, ou seja, ao adotar um critrio no projeto de uma mquina, o outro no ser usado no mesmo projeto. Eles so conhecidos como Monociclo e Multiciclo.
Monociclo
No modelo de processamento Monociclo, o tempo de execuo de cada instruo o mesmo, independentemente da instruo. Parece que algo no est de acordo com tudo que j foi apresentado ao longo desta disciplina, mas verdade, os projetistas avaliam o comportamento das instrues isoladamente e calculam o tempo necessrio para processar totalmente cada uma delas. Ao final de tudo, estabelecem o tamanho do Ciclo de Mquina (sinal que controla a execuo de instrues), pelo critrio de tempo de execuo da instruo mais demorada. Por exemplo, considere a Tabela 30, na qual esto relacionadas as classes de instrues empregadas em um determinado projeto, e os respectivos tempos de execuo. importante observar que, para o clculo do tempo de execuo das instrues, j foi considerada a tecnologia para a fabricao das pastilhas de circuito integrado, bem como os recursos financeiros a serem investidos. Os clculos so efetuados ainda na fase de projeto. Em outras situaes, so usadas ferramentas que permitem a simulao do circuito. Pela referida tabela, identifica-se que as instrues da classe de Movimentao de Dados demoram 1,25 nS (1,25 nanossegundos = 1,25 x 10-9 segundos = 0,00000000125 segundos) e, assim, define-se o tamanho do Ciclo de Mquina. Ainda sobre esse exemplo, como o Ciclo de Mquina de 1,25 nS, a frequncia de operao do processador igual ao inverso do Ciclo de Mquina. Ento, nesse caso, o clock de 800 MHz.
87
No modelo Monociclo, mesmo instrues mais simples como a NOP , por exemplo, gastam o mesmo tempo de execuo de instrues que fazem uso intensivo de acesso memria dedados, com instrues de Movimentao de Dados. As mquinas implementadas usando esse modelo so conhecidas como mquinas que possuem uma baixa frequncia de clock, tipicamente na ordem de 800 MHz. Por assim se apresentarem, no dissipam tanto calor como as mquinas de clocks bem mais altos, por exemplo, 2GHz e, consequentemente, tendem a consumir menos energia eltrica. claro que esses dados so relativos, pois os demais dispositivos fsicos que compem o hardware podem impactar diretamente a relao entre calor dissipado e energia eltrica consumida. Dispositivos mveis normalmente utilizam esse modelo pelas suas caractersticas fsicas e eltricas (calor e consumo). Entre os processadores que fazem uso desse modelo mais comuns no mercado, destacam-se MIPS RS2000, RS3000, Qualcomm MSM7225 do Motorola Spice do Smart Phone Motorola, que roda o sistema operacional Android, o Samsung Exynos Quad-Core, entre outros. Multiciclo Nas implementaes Multiciclo, a metodologia para escolha do tamanho do Ciclo de Mquina possui uma abordagem contrria do modelo Monociclo, ou seja, a escolha considera o tempo de execuo da instruo mais rpida. Nesse contexto, para executar instrues mais demoradas, so demandadas mltiplas unidades do Ciclo de Mquina, da o nome modelo Multiciclo. Para entender melhor, observe a Tabela 31. Note que o tempo mnimo gasto para executar uma instruo de 0,36 nS. Assim, de acordo com o modelo Multiciclo, o tamanho do Ciclo de Mquina igual ao tempo de execuo da instruo mais rpida. Na terceira coluna da Tabela 31, so apresentadas as relaes entre o tempo de execuo de uma instruo de uma das classes e o tempo da instruo mais rpida. Perceba que o tempo para executar as demais instrues passa a ser fraes de tempo do Ciclo de Mquina. Na primeira linha da tabela, por exemplo, o tempo mnimo necessrio para a execuo de uma instruo da classe Aritmtica de 1,16 nS, necessitando de 3,22 ciclos de clock. Como tecnicamente so mais onerosas implementaes de fraes de ciclos de mquina/ clock, criou-se o conceito de Ciclos por Instruo (CPI), apresentado na quarta coluna da tabela. Para calcular os CPI de uma determinada classe de instrues, basta efetuar o arredondamento do valor encontrado na terceira coluna para um valor inteiro da quantidade de ciclos de clock, o qual permite a execuo completa da instruo.
88
Pode-se perceber que, ao estabelecer o tempo base para execuo das instrues em 0,36 nS, como no caso da Tabela 31, a frequncia de clock alta, na ordem de 2,7 GHz (2,7 gigahertz = 2,7 x 109 = 2.700.000.000 vezes por segundo). Isso significa que as mquinas que operam no modelo Multiciclo geralmente possuem uma frequncia de clock muito maior que as mquinas do modelo Monociclo. Dessa forma, natural um consumo de energia eltrica maior e a necessidade de um sistema de arrefecimento mais eficiente, devido s altas temperaturas apresentadas pelos processadores desse modelo. Comercialmente existem mquinas com essa implementao disponveis para uso pessoal e computao de baixo rendimento, como as encontradas em escritrios, lojas e empresas de mdio e pequeno porte. Os processadores da Intel Xenon 3500, Core i7, bem como o AMD FX-8320, so exemplos de processadores implementados segundo o modelo Multiciclo. Como foi apresentado, os dois modelos de implementao de UCP so usados regularmente para a produo de computadores comerciais. Existem vantagens e desvantagens no uso de um ou de outro modelo. Do ponto de vista de implementao fsica da UCP , o modelo Monociclo mais interessante, pois mais simples de ser construdo, uma vez que no necessrio um bloco digital de controle de nmero de ciclos para cada classe de instrues. Assim, ocupase menos espao na rea interna da pastilha de circuito integrado (chip), o que contribui ainda mais para a menor dissipao de calor e, consequentemente, para um consumo de energia eltrica mais baixo, o que torna esse modelo mais indicado para aplicaes usando dispositivos mveis. Por outro lado, dependendo do programa a ser executado, o seu desempenho poder ser pior no modelo Monociclo. No possvel afirmar que um modelo melhor ou pior que o outro, no que se refere a desempenho computacional, pois tudo est diretamente relacionado com o programa a ser executado, mais especificamente com o conjunto de instrues que formam o programa. Quando um projetista de hardware tem que escolher um modelo para a implementao de uma UCP , ele considera inicialmente a classe de problema com que o novo processador ir trabalhar. Por exemplo, se os clculos iniciais de tempo de execuo de instrues apontaram para os valores das Tabelas
89
30 e 31 e se a natureza dos problemas a serem tratados com o novo processador aponta para a gerao de programas que possuem uma quantidade muito grande de instrues da classe de Controle e Lgica, possvel que ele tenha um desempenho satisfatrio sendo executado em uma mquina cujo modelo de implementao de UCP Multiciclo. Por outro lado, se os programas possuem um conjunto maior de instrues da classe de Aritmtica e Movimentao de Dados, o mais indicado rodar em um processador que possui a implementao Monociclo. A escolha do modelo de implementao de processamento envolve outras variveis que ainda no foram apresentadas, e que vo alm de quesitos tcnicos. Envolve questes financeiras,pois o custo final tambm influencia o projeto, mas por ora esses aspectos no sero discutidos.
90
a tomar menos espao na memria que os programas escritos para mquinas RISC. Por outro lado, os projetistas que acreditavam no projeto RISC alegavam que, com frequncia de relgio maior, um processador RISC permite que ele execute programas em menos tempo do que um processador CISC. Ao longo da dcada de 1980 e no incio dos anos 1990, houve muita controvrsia na comunidade de Arquitetura de Computadores sobre qual das duas abordagens era a melhor e, dependendo do ponto de vista, qualquer uma das duas pode ser considerada melhor. Nos ltimos anos, tem havido certa convergncia entre as duas propostas, o que torna difcil determinar se uma implementao segue o modelo RISC ou CISC. Os projetos RISC incorporaram algumas instrues complexas que so bastante teis em um programa. Por outro lado, nos projetos CISC, foram abandonadas instrues complexas, que no eram utilizadas com frequncia suficiente para justificar a sua implementao. Uma diferena clara entre os modelos CISC e RISC refere-se ao acesso memria. Em muitas implementaes CISC, instrues Lgicas e Aritmticas podem usar operandos diretamente namemria principal, ao invs de usar somente os registradores de uso geral, como a proposta do modelo RISC. Por exemplo, comum encontrar instrues em uma mquina CISC que podem permitir uma operao de adio na forma ADD R1, R1, [#36], onde o segundo operando um dado oriundo diretamente da posio de memria 36. Ao passo que nas mquinas RISC, primeiro o operando dever ser carregado em um registrador de uso geral por uma instruo especfica para movimentao de dados com a instruo LOAD, para depois o operando ser envolvido na operao de adio, sendo necessrio o uso de uma instruo de movimentao de dados antes da operao de adio. Devemos entender que, no projeto RISC, cada instruo deve realizar operaes mais especficas, como somente somar, ou somente movimentar dados. No modelo CISC de implementar instrues, uma operao de adio pode envolver mais aes que o simples fato de somar, como movimentar dados e somar em uma mesma instruo. Atualmente, encontram-se processadores hbridos, que so essencialmente processadores CISC, mas que possuem internamente ncleos RISC. Assim, a parte CISC do processador pode cuidar das instrues mais complexas, enquanto que o ncleo RISC pode cuidar das mais simples, nas quais mais rpido. Parece que o futuro nos reserva uma fuso dessas duas tecnologias. Um bom exemplo de processador hbrido o Pentium Pro, processadores I3, I5, I7, todos da Intel.
91
A Tabela 32 apresenta uma comparao entre os modelos de RISC e CISC. Considere que, como os processadores atuais apresentam uma implementao hbrida em sua arquitetura, possuem caractersticas de um modelo e de outro simultaneamente. Em geral, a arquitetura do conjunto de instrues se refere a qualquer aspecto da arquitetura que visvel por um programador em linguagem assembly e que, de forma direta, impacta o desempenho do sistema computacional. Assim, devemos tomar cuidado ao classificar as mquinas novas quanto ao seu conjunto de instrues. A tabela mostra somente as caractersticas que, ao longo da histria, apresentaramse como as principais diferenas entre os modelos RISC e CISC.
CISC
Muitas instrues, variando de 100 a 300 (tipicamente). Instrues mais elaboradas - podem efetuar diversas sub-operaes. Possui instrues que so executadas em termos distintos (CPI varia de acordo com a classe da instruo). Os cdigos possuem tamanhos diferentes, com uma diversidade no formato das instrues. Implementao Little Endian. Uma mesma operao possui muitos modos de endereamento. Poucos registradores de uso geral. Tipicamente 16. Acesso memria livre, dependendo somente do modo de endereamento. Operaes Lgicas e Aritmticas livre, controlada pelo modo de endereamento. Implementao tipicamente Multiciclo.
Nesta unidade foram apresentados os modelos de processamento Monociclo e Multiciclo, que de certa forma impactam o desempenho computacional, o que exige, por parte do projetista de computador, uma anlise detalhada da classe de problemas a serem tratados pelo novo processador, para a definio do modelo de processamento a ser implementado.
92
A diferena funcional bsica entre os modelos encontra-se no tamanho do Ciclo de Mquina, ou perodo de clock, que o projetista determina em funo do tempo de execuo da instruo mais rpida ou mais lenta, estabelecendo-se, assim, o modelo Multiciclo ou Monociclo, respectivamente. Nesta unidade, tambm foram discutidas e apresentadas as caractersticas das mquinas RISC e CISC.
93
Referncias
CARTER, Nicolas. Teoria e problemas de arquitetura de computadores. Porto Alegre: Bookman, 2003. STALLINGS, W. Arquitetura e organizao de computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. TANENBAUM, A. Organizao estruturada de computadores. 4. ed. So Paulo: Prentice-Hall, 2006.
94
Medidas de desempenho
A partir dos anos 1980, o desempenho dos computadores foi impulsionado por melhorias significativas nas capacidades dos circuitos integrados utilizados para implementar a UCP: os circuitos integrados de memria e de outros componentes de computadores. Com o passar do tempo, o processo de fabricao de circuitos integrados incorporou tecnologias que permitiram o aumento de densidade das pastilhas de circuito integrado, ou seja, o aumento da quantidade de transistores e conexes por centmetro quadrado em uma pastilha de silcio (material bsico para a produo de circuitos integrados). Houve tambm uma melhoria no tempo de resposta dos circuitos, permitindo que cada porta lgica bsica e dispositivos de memria tivessem aumento de velocidade de resposta; j o espao usado para acomodar todo o circuito eletrnico ficou cada vez menor, consumindo menos energia e com mais eficincia computacional. A vertiginosa evoluo no desempenho dos computadores ao longo das ltimas dcadas foi alavancada pelo aumento da velocidade de operao e da densidade de integrao dos chips, que foram aperfeioadas em uma escala geomtrica, e no linearmente. Isso significa que, quando se compara a melhoria no desempenho obtida em um determinado ano com a melhoria alcanada no ano seguinte, a diferena entre o ganho em desempenho se mostra relativamente constante, em vez de um valor absoluto constante. Em mdia, o nmero de transistores que podem ser produzidos sobre uma pastilha padro de silcio aumenta cerca de 50% ao ano, e a velocidade de comutao dos transistores aumentou tanto que o atraso no tempo de resposta de uma porta lgica, que formada por um conjunto de transistores, diminui 13% ao ano. Na literatura tcnica, a observao de que o desempenho dos computadores melhora geometricamente e no linearmente conhecida como a Lei de Moore (Gordon Moore, um dos fundadores da Intel).
95
Observadas as caractersticas dos produtos disponibilizados pela indstria do silcio, o volume de dados que pode ser armazenado em um circuito integrado de memria, por exemplo, a RAM dinmica (DRAM), aumentou em quatro vezes a cada trs anos, considerando os dispositivos comercializados desde o incio da dcada de 1980, gerando uma taxa de crescimento anual prxima de 60%. Considerando somente o perodo compreendido entre o final da dcada de 1970 e o final da dcada de 1980, o desempenho das UCPs (processadores) teve como mola propulsora o aperfeioamento da tecnologia de fabricao de circuitos integrados, o que se refletiu num crescimento anual de 35%. Da em diante, a taxa de aperfeioamento efetivamente cresceu para mais de 50% ao ano, embora a taxa do progresso de fabricao de semicondutores tenha permanecido relativamente a mesma no perodo. O aumento na taxa de desempenho dos computadores vem crescendo, tendo em vista tambm as diversas melhorias na arquitetura e na organizao de computadores. Os arquitetos tm se mostrado cada vez mais capazes de tirar proveito da crescente evoluo da densidade de integrao aplicada sobre os circuitos integrados, acrescentando recursos s UCPs, bem como aos sistemas de memria, os quais proporcionam um ganho no desempenho acima do aumento da velocidade dos transistores que os implementam. Para ilustrar isso, pode-se destacar o uso de estruturas lgicas como o pipeline, que ser apresentado mais adiante, o uso de memrias do tipo DDR (Double Data Rate), tcnicas como o overclock, implementao de memrias cache, entre outras.
96
programas que sero executados em um dado sistema antes de decidir qual computador comprar, ou mesmo quando necessrio tomar decises durante a fase de projeto da mquina. Assim, os engenheiros e cientistas da computao criaram algumas mtricas para avaliar o desempenho, e definiram certas unidades de medida para descrever o desempenho de computadores. Tambm foram criadas unidades de medida para registrar o desempenho de alguns subsistemas dos computadores. Deve-se observar que, alm do desempenho, diversos fatores podem influenciar decises de projetos ou de compra de computadores, como a facilidade para o desenvolvimento de sistemas, pois o tempo e os custos necessrios para desenvolver programas que sejam efetivamente teis podem ser mais significativos do que o benefcio com o uso do programa; ou mesmo a questo da compatibilidade dos programas entre as diversas mquinas disponveis no mercado, pois a maioria dos programas comercializada no formato binrio, ou seja, o programa foi desenvolvido em uma linguagem de alto nvel e posteriormente foi traduzido para uma linguagem de mquina especfica e pode ser executado somente por uma famlia de UCP em particular. Se um determinado programa de que voc necessita no pode ser executado no computador que voc tem, no importa a rapidez com que outro sistema pode executar o mesmo programa.
97
CPI
Outra unidade utilizada para descrever o desempenho de computadores est relacionada com o nmero de ciclos de clock necessrios para executar cada instruo, conhecida como Ciclos Por Instruo (CPI). O CPI de um programa a ser executado em um sistema calculado dividindo-se o nmero de ciclos de clock usados na execuo do programa pelo nmero de instrues executadas.
IPC
Em sistemas que podem executar mais de uma instruo por ciclo, o nmero de Instrues Por Ciclo, ou IPC, frequentemente utilizado em detrimento da unidade CPI. O IPC calculado dividindo-se o nmero de instrues executadas pelo nmero de ciclos de clock necessrios para a execuo do programa. Essa unidade est relacionada indiretamente com o CPI. De certa forma, tanto o CPI quanto o IPC fornecem a mesma informao, e a escolha de qual unidade deve ser usada geralmente relacionada com os resultados obtidos usando cada mtrica. Quando se utiliza o IPC e o CPI para comparar sistemas, importante lembrar que valores altos de IPC indicam que o programa de referncia demorou menos ciclos para ser executado do que valores baixos de IPC, enquanto que valores altos de CPI indicam que foram necessrios mais ciclos do que valores baixos de CPI. Assim, um IPC alto tende a indicar bom desempenho; um CPI alto indica um desempenho fraco. Exemplo: Um determinado programa formado somente por uma estrutura de repetio constituda por um conjunto de 100 instrues, as quais so executadas 42 vezes. Considerando que so necessrios 16.000 ciclos de clock para executar o referido programa em uma determinada mquina, quais so os valores de CPI e de IPC do sistema para esse programa? Resposta: A estrutura de repetio possui 100 instrues e executada 42 vezes, de modo que o nmero total de instrues executadas 100 x 42 = 4200. So gastos 16.000 ciclos para executar o programa, de modo que o CPI 16.000/4200 = 3,81. Para calcular o IPC, basta dividir 4200 instrues por 16.000 ciclos, perfazendo um IPC de 0,26.
98
Em geral, o IPC e o CPI so medidas ainda menos teis de desempenho para os sistemas atuais do que o MIPS, porque eles no contm qualquer informao a respeito da frequncia de clock da mquina ou de quantas instrues o sistema exige para executar uma tarefa. Sabendo qual a taxa de MIPS de um sistema para um determinado programa, possvel multiplic-la pelo nmero de instrues executadas no sistema para determinar quanto tempo levou para o programa ser executado. Por outro lado, conhecendo-se a taxa CPI de um sistema para um dado programa e multiplicando-se pelo nmero de instrues executadas, encontrase o nmero de ciclos que foram gastos para completar o programa, contudo, usando-se essa unidade de medida, deve-se conhecer a frequncia de clock do sistema para se determinar o tempo de execuo do programa. Como resultado, o CPI e o IPC raramente so utilizados para comparar sistemas computacionais atuais. No entanto, so unidades muito comuns na pesquisa de Arquitetura de Computadores, porque a maior parte desse tipo de pesquisa feita com programas que simulam uma arquitetura em especial, para estimar quantos ciclos um dado programa ir utilizar para ser executado naquela arquitetura. Esses simuladores geralmente so incapazes de prever o ciclo de tempo dos sistemas que eles simulam, de modo que o CPI / IPC a melhor estimativa de desempenho disponvel.
FLOPS
Computadores modernos e desenvolvidos com foco em aplicaes cientficas, ou que necessitam manipular uma massa muito grande de dados numricos, possuem unidades operacionais especficas para clculos numricos que empregam nmero em ponto flutuante, como o caso dos processadores Pentium, i3, i5 entre outros, que possuem uma ULA dedicada execuo de instrues que envolvem nmeros em ponto flutuante. Considerando essa especificidade, foi criada uma mtrica que avalia o desempenho dessas unidades, chamada de FLOPS (Floatingpoint Operations Per Second), que expressa a quantidade de operaes com ponto flutuante realizadas em um segundo. importante observar que essa unidade de medida deve ser usada somente para comparar mquinas que possuem uma ULA especfica para esse tipo de operao, ou quando se deseja saber quanto ser o ganho, em termos de desempenho, ao comparar mquinas com implementao que no possuem essas unidades especializadas. Ou seja, a unidade FLOPS no deve ser usada de forma geral como as unidades de medidas CPI, IPC ou MIPS.
99
Como os computadores so capazes de realizar milhes de operaes por segundo, podem ser adotados os mltiplos da unidade de medida FLOPS. A Tabela 33 apresenta a relao entre a unidade bsica FLOPS e seus mltiplos, considerando os prefixos oficiais do Sistema Internacional de Unidades.
Conjunto de Benchmark
Como foi apresentado, tanto o MIPS quanto o CPI ou mesmo o IPC possuem limitaes significativas como medidas de desempenho de computadores, principalmente quando se deseja comparar dois sistemas computacionais distintos. Os Conjuntos de Benchmark (ferramentas de referncia para medio de desempenho) so alternativas para efetuar medidas e avaliaes de desempenho de computadores que foram desenvolvidas para resolver as limitaes apresentadas pelas mtricas MIPS, CPI e IPC. Observa-se que o FLOPS possui uma aplicao especfica e usado pelas ferramentas de Benchmark. Uma ferramenta de Benchmark formada por uma srie de programas semelhantes a diversos tipos de programas que sero executados pelos sistemas computacionais. A pontuao de um sistema na ferramenta de Benchmark baseada em quanto tempo o sistema leva para executar todos os programas que compem a ferramenta. Existem muitas ferramentas de Benchmark
100
diferentes, que geram estimativas do desempenho de um sistema com diferentes tipos de aplicaes. Uma das ferramentas de Benchmark mais conhecidas a sute SPEC, produzida pela Standatd Performace Evaluation Corporation. As ferramentas de Benchmark apresentam diversas vantagens sobre MIPS e CPI e IPC. Primeiro, seus resultados de desempenho so baseados em tempos totais de execuo, no na taxa de execuo de instrues. Segundo, elas fazem uma mdia do desempenho do sistema por vrios programas, de modo a gerar uma estimativa de sua velocidade mdia. Isso torna a avaliao geral do sistema por uma ferramenta de Benchmark um indicador melhor do seu desempenho geral do que a avaliao MIPS em qualquer programa isolado. Alm disso, muitas ferramentas de Benchmark exigem que os fabricantes de computadores publiquem os resultados dos seus sistemas usando programas individuais do Benchmark, bem como a pontuao geral do sistema no conjunto de Benchmark, tornando possvel fazer uma comparao direta de resultados individuais dessas ferramentas. Assim, possvel identificar que um sistema ser utilizado para uma aplicao em especial. Mdia geomtrica versus mdia aritmtica Muitas ferramentas de Benchmark utilizam a mdia geomtrica, em vez de mdia aritmtica, para calcular a mdia dos resultados dos programas contidos no conjunto de Benchmark, porque um nico valor extremo tem impacto menor sobre a mdia geomtrica de uma srie do que sobre a mdia aritmtica. Utilizar a mdia geomtrica torna mais difcil que um sistema atinja uma pontuao alta no Benchmark, ao atingir um bom desempenho em apenas um dos programas do conjunto, fazendo com que a pontuao geral do sistema seja um indicador melhor do seu desempenho com a maioria dos programas. A mdia geomtrica de n valores calculada multiplicando-se os n valores e tirando-se raiz ensima do produto. A mdia aritmtica, ou mdia de um conjunto de valores, calculada somando-se todos os valores e dividindo-se o resultado pelo nmero de valores.
Acelerao
Frequentemente, os projetistas de computadores utilizam o termo acelerao para descrever como o desempenho de uma arquitetura muda medida que diferentes melhoramentos so feitos nela. A acelerao simplesmente a razo entre os tempos de execuo antes e depois que mudana feita, de modo que:
101
Acelerao = Tempo de execuoantes / Tempo de execuodepois Por exemplo, se um programa demora 12 segundos para ser executado em uma verso de uma arquitetura e 7 segundos para ser executado em uma nova verso, a acelerao geral de 12 segundos / 15 segundos = 1,714.
Lei de AMDAHL
a regra mais importante para projetar sistemas de computadores de alto desempenho e fazer com que a instruo mais comum seja a mais rpida. Qualitativamente, isso significa que o impacto de um dado aperfeioamento sobre o desempenho geral do sistema depende tanto de quanto o aperfeioamento melhora o desempenho quando ele utilizado, como de com que frequncia esse aperfeioamento utilizado. Quantitativamente, essa regra foi expressa pela Lei de Amdahl, que define: Tempo de execuonovo = Tempo de execuoantigo x [Parcelano_usada + (Parcelausada/Aceleraousada)] Na equao, Parcelano_usada a parcela de tempo (no instrues) na qual o aperfeioamento no est em uso; Parcelausada a parcela de tempo na qual o aperfeioamento est em uso e Aceleraousada a acelerao que acontece quando o aperfeioamento usado (isto , a acelerao geral se o aperfeioamento fosse utilizado o tempo todo). Note que Parcelausada e Parcelano_usada so calculadas utilizando o tempo de execuo antes que as modificaes sejam aplicadas.
Uso de pipeline
Os processadores mais antigos executam as instrues de modo muito direto, ou seja, a UCON busca uma instruo na memria principal e a armazena no IR (ciclo de busca de instruo - BI). Na sequncia, a instruo avaliada e decodificada, permitindo identificar qual operao efetivamente dever ser executada e quais operandos esto envolvidos na operao (ciclo de decodificao da instruo - DI). O prximo estgio do processo de execuo referente leitura dos operandos (ciclo de busca do operando - BO), seguido pela fase de execuo da operao (EX) e finalizando com a escrita/armazenamento do resultado (ER). Essa sequncia ilustrada pela Figura 46:
102
1 BI
2 DI
3 BO
4 EX
5 ER
Considerando-se o diagrama funcional apresentado pela Figura 46, pode-se imaginar que as unidades lgicas usadas para implementar cada um dos ciclos de execuo de uma instruo so teoricamente diferentes, pois envolvem operaes lgicas distintas, podendo-se concluir que, medida que uma determinada instruo vai sendo executada, as unidades funcionais j utilizadas ficam ociosas, havendo, de certa forma, um desperdcio momentneo de hardware. Em analogia ao processo de execuo de instrues por parte dos processadores mais antigos, imagine uma lavanderia que possui os seguintes estgios no seu processo de lavagem: 1. Receber a trouxa de roupa 2. Lavar 3. Secar 4. Passar 5. Entregar
Ainda sobre o funcionamento da lavanderia, considere que ela possui a capacidade de efetuar todo o processo em somente uma trouxa de roupa por vez, demorando cerca de 10 minutos em cada estgio. Dessa forma, so necessrios 50 minutos para atender cada cliente que chegar com uma trouxa de roupa. No difcil imaginar uma melhora nos processos dessa lavanderia, pois, havendo um investimento em pessoal e sincronismo entre os processos, possvel atender a mais de um cliente por vez. claro que o tempo de lavagem da trouxa no muda, mas a vazo nos processos da lavanderia melhoraria significativamente. O que est sendo proposto a otimizao de todas as unidades funcionais da lavanderia, com pelo menos um funcionrio responsvel em cada estgio, e a sincronizao entre os processos. Assim, o primeiro estgio s poder receber uma nova trouxa de roupa quando finalizar a recepo da trouxa j iniciada. Por sua vez, o estgio de lavagem das roupas no poder iniciar uma nova lavagem antes de terminar e entregar a lavagem
103
corrente. Assim dever ser a poltica de trabalho em todos os estgios dessa lavanderia. A Figura 47 ilustra o funcionamento aps a recepo da primeira trouxa de roupa, seguida pelas demais trouxas. Observe que a primeira trouxa ser entregue 50 minutos depois de recebida, assim como as demais; o que melhorou no processo que, a cada 10 minutos, uma trouxa de roupa est pronta para ser entregue, o que aumenta a vazo do sistema de 1 para 5 trouxas a cada 50 minutos. claro que a melhoria aparece aps a entrega da primeira trouxa.
Receber
Lavar
Secar
Passar
Entregar
Trouxa 1 Trouxa 2 Trouxa 3 Trouxa 4 Trouxa 5 ... ... ... ... Trouxa 1 Trouxa 2 Trouxa 3 Trouxa 4 Trouxa 5 ... ... ... Trouxa 1 Trouxa 2 Trouxa 3 Trouxa 4 Trouxa 5 ... ... Processo
Figura 47: Temporizao do processo de lavagem de roupas
Se a mesma metodologia usada na lavanderia for aplicada para a otimizao da execuo das instrues em um processador, ser usada uma tcnica denominada Pipelining, que na verdade usada para sobrepor a execuo de diversas instrues, visando reduzir o tempo de execuo de um programa e no de uma instruo propriamente dita. O pipeline uma estrutura eletrnica usada para implementar uma lgica adicional de controle de execuo de instrues pela UCON, que permite a utilizao de unidades operacionais ociosas em benefcio de um programa. O uso dessa estrutura pode melhorar o tempo de execuo de um programa desde que no ocorram conflitos no pipeline. A Figura 48 apresenta uma implementao de pipeline em forma de blocos lgicos e o uso de registradores entre cada os blocos da unidade de controle, o que permite a implementao da metodologia de sobreposio de instruo, em que cada um dos registradores internos isolam as unidades operacionais envolvidas.
Tempo
104
Registrador EX/ER
Registrador Bo/EX
Registrador DI/BO
O uso de pipeline no a soluo definitiva para o aumento de desempenho em sistemas computacionais. Existem diversos problemas com o uso de pipeline que definitivamente diminuem o seu rendimento geral. A maioria dos problemas pode ser resolvida pelo programador ou pelo aplicativo tradutor (compilador), seja alterando a ordem de execuo de algumas instrues do programa ou mesmo eliminando estrutura condicionais e/ou de repetio em um programa. Tipicamente os problemas encontrados com o uso de pipeline podem ser:
Registrador BI/DI
Estruturais
So problemas oriundos da impossibilidade de uso de alguma unidade operacional da UCP; por exemplo, a unidade lgica responsvel pela busca de instrues conflita com a unidade de busca do operando, no instante da execuo de instrues que necessitam efetuar acesso memria principal para buscar um operando. Normalmente esse tipo de conflito no pode ser controlado pelos programadores, sendo possvel a soluo somente ao longo do projeto do pipeline, ou seja, uma soluo de implementao fsica.
Dependncia de dados
Frequentemente necessrio executar em um programa uma sequncia de operaes lgicas e/ou aritmticas. Estatisticamente, provvel que o resultado de uma instruo seja usado pelas instrues seguintes. Assim, o problema aparece quando, dependendo do nmero de estgios de um pipeline, a instruo imediatamente seguinte ou mesmo a segunda instruo necessita usar esse resultado como fonte de sua operao, ou seja, o operando destino de uma instruo ser usado como operando fonte de uma operao subsequente.
105
Observe, na Figura 49, que o resultado da operao de adio ainda no foi gravado pela unidade de escrita de resultado, e a instruo imediatamente posterior est efetuando a leitura do valor do operando, ou seja, o dado usado pela operao de multiplicao est contaminado, pois possui um valor que no pode ser considerado verdade para a operao. Esse tipo de problema pode ser facilmente resolvido pelo programador/compilador com uma simples troca da ordem das instrues ou mesmo inserindo-se uma instruo NOP para estabelecer a distncia necessria entre as instrues conflitantes.
Desvio
So raros os programas que no fazem uso de instrues de desvio, como as instrues JMP , JZ, JNZ. O que deve ser avaliado com o uso de pipeline que, sempre que houver um desvio, o pipeline dever ser esvaziado e carregado com o alvo da instruo de desvio, bem como as instrues que a seguem, de certa forma, inserindo um atraso significativo no tempo de execuo do programa. Uma proposta de soluo para esse conflito passa pela diminuio do uso de estruturas que efetuam desvios, bem como uma anlise detalhada do programa pelo programador para alocar o trecho de programa que possui a menor probabilidade de execuo como alvo da instruo de desvio. Para anlise de desempenho dos computadores que utilizam pipeline, deve-se considerar a latncia e a taxa de vazo ou throughput. A latncia indica o tempo necessrio para a execuo de uma nica operao. O througput indica a velocidade na qual um conjunto de instrues executado, ou taxa de rendimento, que tipicamente so expressas como instrues\segundo ou instrues\ciclo). Nos processadores que no utilizam pipeline, o throughput igual ao inverso da latncia (1\ latncia), uma vez que cada operao executada atomicamente (indivisivelmente). Nos processadores com pipeline, o throughput deve ser maior que o inverso da latncia, uma vez que existe uma sobreposio de instrues. No entanto, a latncia de um processador com pipeline igualmente importante, na medida em que a latncia determina a frequncia com que instrues que geram conflitos podem ser executadas.
106
MOV R1, 0
ADD R1, R2, R3 MUL R4, R3, R1 SUB R5, R6, R7 SUB R5, R6, R7 ... ... ... ...
MOV R1, 0
ADD R1, R2, R3 MUL R4, R3, R1 SUB R5, R6, R7 SUB R5, R6, R7 ... ... ...
MOV R1, 0
ADD R1, R2, R3 MUL R4, R3, R1 SUB R5, R6, R7 SUB R5, R6, R7 ... ...
MOV R1, 0
ADD R1, R2, R3 MUL R4, R3, R1 SUB R5, R6, R7 SUB R5, R6, R7 ...
MOV R1, 0
ADD R1, R2, R3 MUL R4, R3, R1 SUB R5, R6, R7 SUB R5, R6, R7
Sob o ponto de vista de desempenho computacional, os dispositivos de armazenamento mais indicados so os registradores, mas, devido ao custo de implementao muito alto, os processadores/UCP possuem um conjunto limitado desse tipo de dispositivo de armazenamento,
107
que no suficiente para armazenar um programa completo. Por outro lado, a memria principal um subconjunto do sistema de memria com caractersticas operacionais que devem permitir o acesso leitura e escrita de dados e programas em um volume razoavelmente considervel, mas possui um tempo de resposta alto, o que impacta negativamente o desempenho do sistema computacional. Para otimizar o desempenho sem aumentar significativamente o custo dos computadores, os engenheiros projetaram um subsistema de memria intermedirio entre a UCP e a memria principal, denominado memria cache. A ideia bsica na utilizao de memria cache esconder o baixo rendimento da memria principal com a utilizao de um pequeno banco de memria, constitudo de dispositivos com tecnologia similar dos registradores, que de certa forma se apresenta como um espelho de parte da memria principal (Figura 51). Para tanto, necessrio utilizar um sistema auxiliar de controle de cache, que ir registrar quais endereos de memria esto espelhados e atualizar os dados na memria principal sempre que necessrio.
UCP
Memria Principal
CACHE
Assim sendo, todas as vezes que a UCON efetuar um acesso memria principal, dever verificar, primeiro, se o endereo acessado est na memria cache. Caso o endereo acessado esteja na memria cache, o contedo rapidamente lido pela UCON, no sendo necessrio efetuar acesso memria principal. Nesse caso, dizemos que houve um acerto de cache. Caso contrrio, haver uma falha de cache, obrigando a UCON a efetuar um acesso memria principal, e o sistema auxiliar de cache a copiar o contedo do endereo acessado, bem como alguns outros endereos de memria da vizinhana, conforme o comprimento da linha de cache, para atender a UCON em um futuro prximo e evitar acesso
108
memria principal, ganhando em desempenho. Na verdade, o sistema de controle de cache considera o princpio computacional da localidade para copiar dados da memria principal na cache, pois a probabilidade de acessos a endereos prximos a um endereo j acessado muito alta. O comprimento de linha de uma cache est relacionado com o tamanho do grupo de dados que nela so copiados ou dela so eliminados, em resposta a uma falha na cache. Por exemplo, se uma cache tem o comprimento de linha igual a 32 bytes, todas as vezes que buscar um novo dado na memria, ser copiado um bloco de 32 bytes de dados contendo o endereo de falta e descartando outros 32 bytes para liberar espao na cache. Com relao ao processo de escrita de dados na memria principal, possvel seguir uma de duas polticas bsicas de escrita. A primeira, conhecida como write-through, orienta que, todas as vezes que um dado for gravado na cache pela UCON, ele dever ser gravado imediatamente na memria principal. A segunda chamada de write-back, pela qual a atualizao de um dado na memria principal se d somente quando o sistema de controle de cache encontrar uma falha de cache. Pode-se notar que a primeira poltica tende a diminuir o desempenho do sistema, pois, sempre que um nico dado for gravado pela UCON, ser necessrio esperar o encerramento do processo de escrita na memria principal para efetuar um novo acesso memria. Sob a tica da segunda poltica, pode ocorrer a gravao de mais de um dado na memria principal e, dependendo do programa, essa poltica ser mais eficiente. Como regra geral de uso de memria cache, programas que fazem acessos de escrita a memria principal com muita frequncia devem utilizar a poltica write-back, com, por exemplo, programas de processamento de imagens. Por outro lado, para programas que fazem uso de poucas variveis e com uma frequncia de atualizao baixa mais indicada a poltica writethrough. Na verdade, como no conhecemos a fundo a estrutura interna das aplicaes, o recomendado efetuar testes de funcionamento das duas polticas. A ttulo de curiosidade, a troca da poltica de escrita de cache normalmente efetuada pelo programa de configurao do hardware (Setup do computador).
109
Perifricos
Ainda sobre desempenho computacional, deve-se levar em conta as caractersticas e a tecnologia dos dispositivos de entrada e sada, pois, sempre que for necessrio ler ou gravar um dado que est associado a um determinado dispositivo, a UCP dever aguardar o envio ou o recebimento dos dados por parte do perifrico. Como os perifricos normalmente utilizam sistemas mecnicos, ou dependem da manipulao direta do homem para o seu funcionamento, h de se considerar que eles so muito mais lentos que a UCP , contribuindo negativamente para o desempenho geral do sistema. Perifricos mais modernos utilizam sistemas de memria cache para aumentar a sua performance, mas deve-se lembrar que o custo de produo desses dispositivos mais alto que o dos demais. Outra alternativa para melhorar o desempenho geral dos sistemas a utilizao de uma tcnica conhecida como DMA (Acesso Direto Memria), como ilustra a Figura 52. Essa tcnica faz uso da comunicao direta com a memria principal, gravando ou lendo uma massa de dados nos momentos em que a UCP no est fazendo uso do barramento de comunicao externo, lembrando o modelo de Von Neumman, e assim evita que a UCP faa acessos diretos aos perifricos para manipulao de dados.
UCP
CACHE
Memria Principal
110
Esta unidade apresentou alguns conceitos e tecnologias que impulsionam o desempenho de computadores e forneceu um arcabouo de recursos para a discusso e a avaliao do desempenho de sistema. Como foi apresentado, h vrios modos de medir o desempenho de computadores, e as medidas mais efetivas do desempenho geral so baseadas no desempenho de um sistema com uma ampla variedade de aplicao. Para prever o desempenho de um sistema em uma determinada aplicao, importante entender como uma dada unidade de desempenho foi concebida, de modo que se entenda tambm qual a sua utilidade. Vimos que o uso de tcnicas de adiantamento de instrues (pipeline) pode contribuir positivamente para o desempenho, mas cuidados devem ser tomados para evitar os conflitos no pipeline. Vimos, ainda, como o uso de memrias espelho e tcnicas de DMA podem melhorar o desempenho de um sistema.
111
Referncias
CARTER, Nicolas. Teoria e problemas de arquitetura de computadores. Porto Alegre: Bookman, 2003. STALLINGS, W. Arquitetura e organizao de computadores. 5. ed. So Paulo: Pearson Education do Brasil, 2002. TANENBAUM, A. Organizao estruturada de computadores. 4. ed. So Paulo: Prentice-Hall, 2006.
112