Baixe o app para aproveitar ainda mais
Prévia do material em texto
Introdução Para estudarmos como um computador funciona, e como os seus vários componentes são organizados para possibilitar este funcionamento deveríamos primeiramente definir o que é um computador, o que não é uma tarefa simples. Segundo o dicionário Houaiss, a definição de computador é: computador Datação 1789 cf. MS1 Acepções ¦ substantivo masculino 1 o que computa; calculador, calculista 2 Rubrica: informática. máquina destinada ao processamento de dados; dispositivo capaz de obedecer a instruções que visam produzir certas transformações nos dados, com o objetivo de alcançar um fim determinado É claro que quem utiliza um computador, seja de um computador doméstico, parte de um grande ambiente corporativo ou mesmo um telefone celular, sabe que tal definição nem de longe corresponde à capacidade que um destes dispositivos possui. O computador (de todos os portes imagináveis) hoje desempenha as funções mais diversas e se tornou parte do cotidiano de boa parte da população (mesmo que elas não saibam disso). O problema, é que em interior o computador é uma máquina que consegue fazer muito poucas coisas. Somar e comparar números, mover valores de uma área de memória para outra e não muito mais que isso é o que o computador realmente consegue fazer, não importa o quão miraculoso ele nos pareça quando olhamos do lado de fora. Chega a ser paradoxal que um equipamento limitado como esse consiga ser capaz de ser usado em tantas aplicações. Mas não existe mágica aqui, apenas um longo e constante processo evolucionário que começou no século XVII e ainda está longe de acabar. Explicar parte dos processos que tornam isso possível é objetivo desta matéria. Máquinas multiníveis Um computador é uma máquina que pode realizar um determinado conjunto de funções. As pessoas que utilizam estes computadores desejam fazer certas atividades que não correspondem diretamente a este conjunto de funções. Para que seja possível que os usuários consigam executar as funções que necessitam, é necessário que haja um processo de tradução. Os primeiros computadores que foram construídos só podiam ser utilizados pelos engenheiros que os construíram. Era necessário saber exatamente o como os circuitos eletrônicos (ou eletromecânicos) se interligavam para que se conseguisse realizar as atividades mais simples. À medida que surgiu a necessidade de expandir a utilização dos computadores, foi necessário criar mecanismos que possibilitassem aos usuários realizar atividades sem que fosse necessário um conhecimento profundo da arquitetura destes mecanismos. Imaginemos que o computador possa realizar uma quantidade limitada de instruções ou comandos. Chamemos este conjunto de linguagem de máquina. A linguagem que os usuários utilizam não pode se limitar à linguagem de máquina, ela precisa se aproximar da linguagem humana para atender problemas do mundo real, chamemos esta segunda linguagem de linguagem de alto nível. Para que possa haver uma correspondência entre as duas linguagens é necessário que o segundo conjunto seja traduzido para o conjunto inicial. Este processo ocorre diversas vezes dentro de um computador. A história da evolução dos computadores é um processo de adição de níveis de tradução. Se os primeiros computadores só podiam ser utilizados pelos engenheiros que os construíram, os computadores atuais podem ser utilizados por pessoas com um conhecimento técnico mínimo, se tanto. Isto só é possível por que as necessidades destes usuários são submetidas a vários níveis de tradução até chegar até uma instrução que o computador consiga efetivamente executar através de impulsos elétricos. Este processo de evolução nos levou ao computador contemporâneo, que possui diversos níveis, por isso o denominamos máquina multiníveis. A interação entre cada um dos níveis corresponde a um tipo de tradução. O nível 0 chamado lógico digital, corresponde aos circuitos eletrônicos que efetivamente realizam o processamento de informações na forma de impulsos elétricos dentro do processador . O nível 1 corresponde à microarquitetura do processador, que são elementos internos do processador: registradores (que são a memória de alta velocidade interna do processador) e a ULA (unidade lógica aritmética) que é o elemento do processador que realiza operações aritméticas simples. Estes registradores são conectados à ULA para formar um caminho de dados, através do qual os dados transitam para dentro e fora do processador. Uma operação normal do caminho de dados consiste em selecionar o conteúdo de um ou dois registradores e submetê-los à ULA e movimentar o resultado para outro registrador. O nível 2 corresponde ao conjunto de instruções suportado pelo processador. O conjunto de instruções corresponde aos comandos que o processador pode receber de fontes externas. Este conjunto de instruções é determinado pelo projeto do processador e normalmente não pode ser alterado. O conjunto de instruções também é comum entre os processadores de uma mesma família, permitindo assim a interoperabilidade de programas e sistemas operacionais dentro desta família. O nível 3 corresponde ao sistema operacional. O SO fornece uma plataforma que possibilita que programas não tenham que interagir diretamente com o hardware. Aliás, isto é mandatório em se tratando de sistemas multitarefa. Não é possível existir um sistema multitarefa sem que exista um elemento arbitrando o acesso ao hardware essa função é do sistema operacional. Em sistemas computacionais modernos, todo acesso ao hardware é feito através do sistema operacional. O nível 4 corresponde à linguagem de montagem. A linguagem de montagem ou assembly é uma linguagem dependente da plataforma, ou seja, processadores diferentes ou de famílias diferentes possuem linguagens de montagem diferentes incompatíveis entre si. Um programa escrito em linguagem de montagem só pode ser usado em uma determinada plataforma ou família de processadores. O nível 5 corresponde à linguagem orientada a problemas ou linguagem de alto nível. Este tipo de linguagem independe da plataforma em for usada, ela deve ser traduzida (compilada) para um formato que o sistema operacional consiga interpretar e enviar para os níveis mais baixos da máquina multiníveis. História da arquitetura de computadores Para entender como um computador funciona, precisamos compreender como se deu sua evolução, pois um dispositivo sempre incorpora ao menos parte da tecnologia dos seus predecessores. Os computadores que usamos hoje incorporam em seu design decisões que foram tomadas décadas atrás. Geração Zero – Computadores Mecânicos (1642 – 1945) As tentativas de criar mecanismos para processar dados remontam ao século XVII. Foi nesta época que os primeiro mecanismos capazes de realizar cálculos de forma automatizada surgiram. Os equipamentos desta época eram totalmente mecânicos, já que os dispositivos eletromecânicos surgiriam apenas no século XX. O primeiro dispositivo deste tipo foi construído por Blaise Pascal (1623 – 1662) em 1642. Este dispositivo foi criado por Pascal para auxiliar seu pai, que era coletor de impostos. Pascal tinha apenas 19 anos. Este dispositivo ficou conhecido como Pascalina. Uma das Pascalinas construídas por Blaise Pascal Esta primeira máquina criada por Pascal podia executar apenas somas e subtrações. Trinta anos depois, Gottfried Wilhelm Von Liebniz criou um dispositivo que podia executar as quatro operações básicas. Staffelwalze, uma das calculadoras mecânicas projetadas por Liebniz Estes dispositivos foram as primeiras tentativas de automatizar processos manuais, neste casocálculos. Mas eles se limitavam a isso. A evolução destes equipamentos foi proposta apenas em 1822, por Charles Babbage (1792 – 1871). Este novo dispositivo foi chamado de Máquina Diferencial, e ao contrário de seus predecessores que apenas realizavam operações simples, ele foi desenhado para executar um algoritmo. O objetivo desta máquina e seu algoritmo era produzir tabelas úteis para a navegação naval, assunto estratégico para a época. A Máquina Diferencial podia executar apenas este algoritmo. Máquina Diferencial construída pelo Museu de Londres a partir de notas de Babbage Apesar da aceitação de suas idéias e do financiamento do governo britânico, Babbage tinha planos mais ambiciosos. Ele vislumbrou um dispositivo programável. Esta nova máquina foi batizada de Máquina Analítica, e continha vários conceitos presentes ainda hoje nos computadores modernos, como um dispositivo de entrada (uma leitora de cartões perfurados), dispositivos de saída (impressora e perfuradora de cartões), memória (capaz de armazenar 1.000 números) e uma unidade aritmética (chamada de moinho). Babbage descreveu esta máquina pela primeira vez em 1837. Sob vários aspectos, a Máquina Diferencial antecipou o computador moderno em 100 anos. No século XIX, diversas Máquinas Diferenciais foram construídas com base nas teorias e documentos de Babbage, mas o próprio Babbage nunca chegou a produzi-las, nem a Máquina Analítica. As suas idéias, entretanto, influenciariam diversos pioneiros da computação. Ele correspondeu-se com a Condessa Ada Lovelace, que se interessou por suas propostas para a máquina analítica e chegou a desenvolver um método calcular números de Bernoulli utilizando a Máquina Analítica. Este é considerado o primeiro programa de computador da história e a Condessa Ada Lovelace, a primeira programadora. A linguagem ADA foi batizada em sua homenagem. O problema que Babbage enfrentou é que a tecnologia do século XIX não podia fornecer a precisão que seria necessária para a construção de um mecanismo tão complexo e ambicioso quanto a Máquina Analítica. Mesmo nunca tendo concretizado sua visão, Charles Babbage é considerado o avô do computador e os equipamentos atuais ainda incorporam conceitos que ele anteviu mais de 100 anos atrás. O próximo passo no caminho do computador seria dado apenas na década de 1930, quando em vários pontos começaram a surgir dispositivos calculadores eletromecânicos utilizando relés. Na Alemanha Konrad Zuse construiu uma série de equipamentos para executar cálculos usando relés. Todos os seus equipamentos foram destruídos durante a guerra, o que impediu que seus designs tivessem influências nos desenvolvimentos subseqüentes. Pouco tempo depois de Zuse, na Universidade de Iowa nos EUA, John Atanasoff projetou um equipamento para fazer cálculos que utilizava artimética binária e capacitores como memória de armazenamento. Da mesma forma que outros predecessores, o projeto de Atanasoff nunca se tornou operacional. Simultaneamente, também nos EUA, George Stibbitz construiu um equipamento para fazer cálculos que realmente funcionava, apesar de ser menos sofisticado que o projeto de Atanasoff. Stibbitz fez uma grande demonstração de sua criação em 1940, entre os que assistiram esta demonstração estava John Mauchley, que depois daria suas próprias contribuições à história do computador. Zuse, Stibbitz e Atanasoff estavam tentando criar máquinas calculadoras automáticas. Apesar de compartilharem componentes com os computadores, elas tinham um propósito único: realizar cálculos. Nenhum destes projetos tencionava ser o que Babbage tinha almejado no século XIX: um equipamento programável. O próximo passo neste caminho foi dado nos também nos EUA em 1944: Howard Aiken construiu o Harvard Mark I, o primeiro computador digital da história. Ele era capaz de realizar cálculos Aiken baseou-se nos conceitos de Babbage para criar o Mark I. Apesar de ter sido bem sucedido, o sucessor do Mark I, o Mark II já estava obsoleto ao ser concluído. A era dos computadores eletromecânicos havia chegado ao fim. Começava a era dos computadores eletrônicos. Primeira Geração– Válvulas (1945 – 1955) Os primeiros computadores eletrônicos surgiram na fase final da Segunda Guerra Mundial. O interesse dos militares por computadores se dava em dois campos específicos: quebra de códigos criptográficos e cálculos de artilharia. Para este segundo propósito John Mauchley propôs a construção de uma máquina para o Exército Americano, o que viria a se tornar o ENIAC. Durante muito tempo, o ENIAC (Eletronic Numerical Integrator and Computer) foi considerado primeiro computador eletrônico da história. O seu projeto que foi patrocinado pelas forças armadas dos EUA e conduzido por John Mauchley e J. Presper Eckert iniciou-se em 1943. O ENIAC entrou em operação em 1946, tarde demais para seu propósito bélico original. O ENIAC em operação na década de 1940 Entretanto, décadas depois do final da guerra que o trabalho de um grupo de cientistas britânico veio a público. No auge da Segunda Grande Guerra, a Alemanha nazista utilizava um equipamento eletromecânico para codificar mensagens de forma muito mais eficiente do que os métodos manuais: trata-se da máquina ENIGMA. Um exemplar da máquina ENIGMA Para quebrar os códigos gerados por este dispositivo, o governo britânico patrocinou a construção do que foi de fato o primeiro computador eletrônico, batizado de COLOSSUS. Este dispositivo entrou em operação em 1943 e o famoso matemático Alan Turing, criador de muitos dos conceitos do computador moderno participou deste projeto. Infelizmente todo o projeto foi mantido em segredo pelo governo britânico e por este motivo, o trabalho pioneiro de Turing e seus colegas não pôde ser compartilhado e não teve influência nas gerações posteriores de computadores O ENIAC, por outro lado teve descendentes diretos. O conhecimento do projeto de Mauchley e Eckert foi compartilhado com vários colegas cientistas que criaram seus próprios computadores. Os próprios Mauchley e Eckert deixaram a Universidade da Pensilvânia onde lecionavam para fundar uma companhia, a Eckert-Mauchley Computer Corporation. Hoje, após uma série de fusões e aquisições, esta companhia é parte da Unisys Corporation. Nesta época de interesse florescente, um dos cientistas envolvidos no projeto do ENIAC deu uma contribuição fundamental para a evolução do computador moderno. Seu nome era John Von Neumann, e uma das coisas que ele percebeu nos computadores da época é que programar um computador usando quantidades enormes de cabos e chaves era uma tarefa demorada e tediosa, Ele também apontou a vantagem de se usar os dados armazenados em forma binária ao invés de decimal (como o ENIAC fazia). O projeto básico que ele concebeu na década de 1940 foi utilizado na construção da máquina IAS. Esta arquitetura foi batizada de máquina de Von Neumann e é até hoje a estrutura básica de qualquer computador comercial. A estrutura da máquina de Von Neumann Enquanto tudo isso acontecia, a IBM lentamente despertava para o mercado de computadores comerciais. Apesar de ter parcialmente financiado o projeto de Howard Aiken, a IBM não estava muito interessada em computadores até que lançou o IBM 701 em 1953. Ele era um computador voltado para aplicações científicas e em cerca de dez anos esse mercado seria dominado pela IBM. Segunda Geração – Transistores (1955 – 1965) O transistor foi inventado por John Bardeen, Walter Brattain e William Shockley em 1948, nos laboratórios Bell. Em pouco tempo o transistor mudou a face da computação (e de toda a incipiente indústria de eletrônica de consumo), pois apresentava grandes vantagens frente à válvula:era menor e tinha vida útil infinitamente maior. Dez anos após a invenção do transistor, os computadores com válvulas estavam obsoletos. O primeiro computador a usufruir da nova tecnologia foi o TX-0 (Transistored Experimental Computer 0), construído no MIT (Massachucets Institute of Technology). O objetivo deste projeto era servir como dispositivo de testes para um equipamento mais sofisticado, o TX-2. O TX-2 não foi um grande sucesso, mas um dos engenheiros que participaram do projeto fundou uma companhia, a Digital Equipment Corporation – DEC em 1957, para construir um computador cujo projeto era baseado no TX-0. Esse computador foi batizado de PDP-1. Na época a DEC demorou quatro anos para conseguir financiamento para seu produto, pois os investidores tinham sérias dúvidas sobre a viabilidade do mercado de computadores comerciais. O PDP-1 foi finalmente lançado em 1961. Ele tinha cerca de metade da capacidade de processamento do IBM 7090, o computador científico mais rápido do mundo na época, mas ele custava 120 mil dólares enquanto que o 7090 custava milhões. A DEC vendeu dezenas de PDP-1 e criou o mercado de minicomputadores. Alguns anos mais tarde, a DEC lançou uma nova máquina o PDP-8. Além de ser mais barata que o PDP-1 (16 mil dólares), ela trouxe uma inovação importante, o uso de um barramento. Esta arquitetura representou uma mudança importante em relação à da máquina IAS que era centrada na memória e é usada em computadores até hoje. Barramento Omnibus do PDP-8 Enquanto a DEC se consolidava no mercado de minicomputadores, a IBM produzia equipamentos de alto desempenho para aplicações científicas como o 7090 já citado e sua versão melhorada, o 7094. Em outra frente, a IBM estava obtendo sucesso com outro tipo de equipamento, chamado 1401. Ele tinha um desempenho muito menor que o 7094 para aplicações científicas, mas era bastante adequado para aplicações comerciais, sem mencionar que era muito mais barato. Em 1964 uma pequena companhia lançou um equipamento voltado para aplicações científicas batizado de 6600. O CDC 6600 conseguiu ser mais rápido que o IBM 7094 e qualquer outro computador da época, principalmente por introduzir paralelismo em alta escala, além de pequenos computadores internos para reduzir a carga de processamento da CPU principal. Muitas idéias referentes a paralelismo presentes nos computadores modernos descendem diretamente do CDC 6600. O seu projetista Seymour Cray dedicou sua vida à produção de computadores (depois da CDC ele criou sua própria empresa, a Cray Computing) cada vez mais rápidos e criando o mercado de supercomputadores no processo. Terceira Geração – Circuitos Integrados (1965 – 1980) A invenção do circuito integrado de silício por Robert Noyce em 1958 permitiu que dezenas de transistores fossem colocados em uma única pastilha (ou chip). Isso conduziu a produção de computadores a um novo patamar, totalmente impensável nas gerações anteriores. Agora eles poderiam ser menores, mais rápidos e mais baratos do que jamais havia sido possível. Mas uma das maiores inovações deste período não dependia de desenvolvimento de novas tecnologias. A IBM nesta época tinha dois equipamentos de sucesso, os já citados 1401 e 7094. O problema é que eles eram totalmente incompatíveis entre si. Um cliente que possuísse os dois equipamentos teria que ter duas equipes distintas para fazer uso deles. Quando chegou a hora de lançar os substitutos destes equipamentos, a IBM deu um passo revolucionário, lançando vários computadores em uma mesma linha chamada System/360. O grande diferencial da linha 360 é que vários modelos de vários portes compartilhavam uma mesma arquitetura, o que permitia que um mesmo programa fosse utilizado nos vários modelos da mesma família. Hoje isso parece óbvio, mas durante os anos 1950, o foco do desenvolvimento sempre foi o hardware. A família 360 foi a primeira vez que se pensou em interoperabilidade e compatibilidade. Outra novidade importante na família 360 era o conceito de multiprogramação. Este conceito permitia que o computador mantivesse vários programas em memória e enquanto um programa estivesse esperando uma operação de E/S ele pudesse executar outro. Este conceito simples, uma das primeiras implementações de multitarefa aumenta a utilização da CPU. E também torna mais importante uma figura até então desconhecida: o sistema operacional. O conceito de multitarefa só pode existir com a presença de um sistema operacional. O mercado de minicomputadores também evoluiu e o lançamento mais significativo foi o PDP-11 da DEC que teve enorme sucesso, em especial em universidades. Quarta Geração – Integração em Larga Escala (1980 – 2000) Na década de 1980 a VLSI (Very Large Scale Integration – Integração em Escala Muito Grande) possibilitou colocar dezenas de milhares, depois centenas de milhares e por fim milhares de transistores em um único chip. Esse desenvolvimento levou a computadores menores e mais rápidos. Antes do PDP-1, computadores eram tão grandes e caros que universidades e empresas precisavam ter departamentos dedicados à sua operação. Com a chegada do minicomputador, cada departamento poderia ter seu próprio computador. No início dos anos 1980, o processo de barateamento e miniaturização dos computadores chegou a tal ponto que um indivíduo podia possuir seu próprio computador. Era o início da era do computador pessoal, o microcomputador. Os primeiros microcomputadores não eram fabricados da mesma forma que os computadores comerciais da época. Eles eram vendidos como kits para serem montados em casa por hobistas na área de eletrônica ou computação. Um dos primeiros foi o Altair 8800, mostrado na figura abaixo. Altair 8800, um dos primeiros microcomputadores comerciais Estes primeiros computadores não tinham muita aplicação prática, pois além de montar seus computadores, os usuários tinham que desenvolver seus próprios programas. Apesar das limitações destes equipamentos, diversas empresas investiram no nascente mercado de computação pessoal. Uma das mais bem sucedidas foi a Apple, fundada por Steve Jobs e Steve Wozniak, cujo modelo Apple II (lançado em 1977) foi um sucesso comercial. O sucesso do Apple II foi tão grande na época de seu lançamento que a Apple se tornou um grande fabricante de computadores praticamente da noite para o dia. O Apple II, um dos primeiros microcomputadores comerciais de sucesso Enquanto a Apple e outras pequenas empresas criavam todo um novo mercado de computadores para uso doméstico, os grandes fabricantes como a IBM estavam hesitantes quanto a investir ou não nesse nicho. A IBM decidiu por fim entrar no mercado do computador pessoal, mas ao contrário do que era seu hábito, decidiu utilizar componentes de mercado, ao invés de desenvolver todo o projeto. Como microprocessador foi escolhido o 8088 da Intel e o IBM PC foi lançado em 1981. Um dos grandes erros da história da IBM foi cometido nesta época. Ela não resguardou seu produto por patentes, muito pelo contrário, ela divulgou publicamente os dados do projeto de seu microcomputador. O resultado foi o surgimento de toda uma indústria de “PC Clones” ou computadores padrão IBM PC, da qual uma pequena parte apenas era fabricada e vendida pela IBM. Um dos primeiros IBM PC A IBM também se associou à Microsoft para o desenvolvimento do sistema operacional de seu microcomputador. Outro grande erro da IBM foi não enxergar o potencial do software para esta plataforma. Na verdade, os executivos da IBM estavam interessados na venda de hardware. Como conseqüência, o MS-DOS da Microsoft se tornou o sistema operacional padrão para os computadores padrão IBM PC o que ajudoua Microsoft a ser tornar uma das empresas mais ricas do mundo nos anos 1990. A arquitetura desenvolvida pela IBM se tornou o padrão para microcomputadores de uso comercial e a maioria das empresas que fabricavam microcomputadores com padrões distintos (Commodore, Atari, Sinclari, entre outras) desapareceu ou abandonou esse nicho de mercado. A Apple conseguiu sobreviver, em parte por ter sido a primeira a introduzir uma interface gráfica utilizável. Esta característica foi introduzida inicialmente no Apple Lisa, mas encontrou sucesso no Apple Macintosh. Apple Lisa O Apple Lisa fracassou devido ao alto preço, mas deixou claro as vantagens do uso de uma GUI (Graphical User Interface – Interface Gráfica com o Usuário). Este tipo de interface usa um dispositivo apontador (normalmente um mouse) e elementos gráficos como ícones e menus como meio principal para interação com o usuário. As gerações usavam principalmente comandos em shells ou prompts de comando, o que requeria um treinamento mais aprofundado para os usuários de computadores. Com a introdução da interface gráfica e aumento da facilidade de uso a popularização dos microcomputadores se acelerou ainda mais. O Apple Macintosh original Quinta Geração – Computação Ubíqua (2000 em diante) Ao contrário das gerações anteriores, atualmente onde os equipamentos com capacidade processamento não são mais necessariamente computadores. Desde o final dos anos 1990, diversos equipamentos passaram a possuir capacidade de processamento, sem que necessariamente fossem computadores completos. Palmtops, telefones celulares e até mesmo automóveis e certos refrigeradores hoje possuem alguma capacidade de processamento, podendo até mesmo rivalizar com computadores de gerações anteriores. Como exemplo desta evolução, podemos tomar como exemplo o AGC (Apollo Guidance Computer), computador embarcado usado pela missão Apollo, responsável por levar os primeiros astronautas para a Lua. Este equipamento tinha menos de 64 KB de memória e 2Mhz de velocidade de clock, se compararmos este equipamento (que era tecnologia de ponta no final do anos 1960) com um computador desktop padrão de mercado atual, que tem 1 ou 2 Gigabytes de memória e 2Ghz de velocidade de clock, chegaremos à conclusão que o segundo é cerca de 1.000 vezes mais rápido e possui mais de 32.000 vezes mais memória, sem mencionar a complexidade de equipamento. Isto pode servir como parâmetro para a velocidade de evolução da tecnologia de processamento de dados nas últimas três décadas. Unidade de interface com o usuário do AGC Mas, além do barateamento e aumento de capacidade de elementos como dispositivos de armazenamento (discos e afins) e memória, o desenvolvimento de várias tecnologias como redes locais, Bluetooth e WiFi e popularização da internet permitiu o desenvolvimento de equipamentos que se apóiem em redes e recursos localizados em outros computadores para atender às necessidades de seus usuários. Os computadores das gerações anteriores precisavam manter suas massas de dados acessíveis localmente e contar apenas com sua capacidade de processamento, os computadores de quinta geração podem contar com a capacidade de armazenamento e de processamento de outros computadores através de redes de diversos tipos. Exemplo de Smartphone: Motorola Q1 Este tipo de capacidade pode criar ambientes tão complexos que pode se tornar difícil no futuro determinar onde começa e termina o computador e onde estão os dados que utilizamos, pois teremos à nossa volta diversos dispositivos interagindo entre si para atender às nossas necessidades. Quando este tipo de ambiente se tornar comum, talvez não tenhamos uma sexta geração de computadores, mas algo totalmente diferente. A organização do computador Um computador digital consiste em um sistema interconectado de processadores, memórias e dispositivos de entrada e saída. Estas são as três categorias básicas de componentes de um computador moderno. Cada elemento de um computador qualquer se encaixará em uma destas classificações. Vamos analisar em seguida cada um deles. Processadores A unidade central de processamento (UCP ou CPU – Central Processing Unit) é o centro do computador. A execução de um programa normalmente consiste em trazer um programa de um dispositivo de armazenamento (disco, por exemplo) para a memória principal. Da memória principal, o programa é transferido para a CPU, uma instrução por vez. Dentro da CPU é que o verdadeiro processamento ocorre, onde as instruções serão interpretadas e executadas. Como podemos ver na figura seguinte, todos estes elementos se comunicam através de um barramento. A organização de um computador simples Como podemos ver também na figura, a CPU internamente e composta por várias partes distintas. A unidade de controle é responsável por buscar instruções na memória e determinar se tipo. A unidade lógica e aritmética executa operações matemáticas simples como adição e E booleano. A CPU também contém uma pequena quantidade de alta velocidade, que é utilizada na execução de instruções. Essa memória é organizada em registradores. Cada registrador tem um tamanho fixo (comprimento em bits) e um propósito específico, como o Contador de Programa (PC – Program Counter). A função de PC é identificar qual a próxima instrução a ser trazida para a CPU do programa em execução. A organização da CPU é detalhada na figura abaixo. Os registradores e a ULA formam um caminho de dados. Um exemplo de caminho de dados Os dados são movimentados dos registradores para um ou dois registradores que alimentam a ULA e deles para a própria ULA através de um barramento que interconecta estes elementos. A ULA ira realizar as operações matemáticas mais básicas, como soma e comparação e mover o resultado para um registrador de saída. Posteriormente o conteúdo deste registrador será movido para outro registrador e de lá para a memória principal. Neste ponto, podemos estabelecer a distinção entre dois tipos diferentes de instruções: instruções registrador-registrador e instruções registrador-memória. As primeiras dependem apenas dos dados que estão armazenados na CPU e as segundas precisam buscar dados da memória principal, através do barramento. O processo de submeter dois valores à ULA e obter um resultado é chamado de ciclo do caminho de dados. Este ciclo é o núcleo da maioria das CPUs, pois determina o que ela pode fazer. Quanto mais rápido a CPU conseguir executar este ciclo, mais rápido se dará o processamento. Além do ciclo do caminho de dados, interno à CPU, temos o ciclo externo, que determina como a CPU interage com os dados que estão fora da CPU, na memória principal. A CPU executa cada instrução em uma série de pequenos passos. 1- Trazer a próxima instrução da memória até o registrador 2- Alterar o contador de programa para indicar a próxima instrução 3- Determina o tipo da instrução 4- Se a instrução necessitar de uma palavra da memória, determinar onde esta palavra está 5- Trazer a palavra para dentro de um registrador da CPU, se necessário 6- Executar a instrução 7- Voltar à etapa 1 para iniciar a execução da instrução seguinte Esta seqüência costuma ser denominada ciclo buscar-decodificar-executar. É fundamental para a operação de todos os computadores. Lembre que o programa é armazenado na memória na forma instruções que o processador consiga interpretar. Voltando à máquina multiníveis, o programa escrito originalmente em linguagem de alto nível sofreu vários níveis de tradução antes que pudesse ser executado diretamente pelo processador.Memória primária A memória é a parte do computador onde são armazenados programas e dados. A memória primária também é chamada de memória principal ou RAM. A memória principal é utilizada para armazenar os programas em execução e os dados em uso por estes programas. A memória principal é costumeiramente volátil, ou seja, mantém os dados armazenados apenas enquanto o equipamento está energizado. Bits, bytes e terabytes A unidade básica de memória é o dígito binário ou bit. Um bit consegue armazenar apenas o valor 0 ou 1, e é o bloco básico de informações. Um dos agrupamentos mais comuns de bits é o byte, que tem 8 bits de comprimento. Quando se trata de bits e bytes, existe certa confusão quanto aos múltiplos que podem ser usadas para expressar estas quantidades. Como o bit é um valor binário, os múltiplos são potências de 2. Um kilobyte, portanto não são exatamente 1.000 bytes (103), mas 1.024 (210). De modo semelhante 1 MB contém 1.048.576 bytes (220) e não 1.000.000 de bytes (106). Os outros sufixos mais comuns em se tratando de memória são Giga: 1 GB equivale a 230 – 1.073.741.824 bytes e Tera: 1 TB equivale a 240 – 1.099.511.627.776 bytes. Na tabela abaixo temos os prefixos decimais mais comuns, lembrando que em se tratando de memória, devemos usar a base binária ao invés da base 10. Os principais sufixos métricos Endereços de memória Para que seja possível utilizar a memória, deve ser possível gravar e ler informações nela. E para que isto seja possível, a memória deve ser organizada de modo que cada unidade utilizável de memória tenha um endereço único. Os bits de memória são organizados em células, e cada célula tem um endereço único. O tamanho da célula varia de acordo com o sistema, mas o mais comum é que a célula tenha 8 bits (1 byte) de comprimento. A célula é a menor unidade endereçável de memória. Três formas de organizar 96 bits de memória Outro conceito importante é a palavra. Uma palavra é o tamanho da unidade de dados que é transferida da memória para o processador. Quando falamos que um computador é de 32bits ou 64bits, estamos nos referindo ao tamanho da palavra deste processador. Ou seja, um computador de 32 bits consegue transmitir 4 bytes entre a memória e o processador, enquanto que um computador de 64 bytes transmite 8 bytes. Este conceito é importante, por que se o processador recebe um valor de 8 bytes da memória, todos os seus registradores tem que ter no mínimo este comprimento. Isso implica também na quantidade de memória que um computador pode suportar. Se o registrador dedicado a tratar endereços de memória tem 1 bit de comprimento, o computador só suportará 2 endereços ou duas células (0 e 1). Se este registrador tiver 32bits, a quantidade de células endereçáveis será de 4.294.967.295. Em um computador com células de 1 byte, isso equivale a 4GB de memória. Se este registrador tiver 64bits, a quantidade de endereços possíveis sobre para 18.446.744.073.709.551.615 ou aproximadamente 18,45 Exabytes, uma quantidade de memória impensável nos padrões tecnológicos atuais. Memória Cache A memória cache (e não cachê) é uma área de memória intermediária entre o processador e a memória principal. O termo cache é amplamente usado para dispositivos que servem como área intermediária entre um meio mais rápido e outro mais lento (cache de disco, cache de impressão, etc). A memória cache, conforme a definição aqui adotada, é uma área de memória localizada entre o barramento e a CPU. Como já falamos antes, o tempo de acesso à memória principal a partir do processador é lento, em termos de velocidade de processamento então se o processador não precisar percorrer o barramento para buscar uma determinada informação, mas a uma área mais próxima, o computador ganha em desempenho. Normalmente a memória cache faz parte da mesma embalagem que o próprio processador, mas não faz parte da arquitetura interna dele, onde se localizam os registradores e demais componentes da CPU. A localização lógica da memória cache Existem várias formas de implementar a memória cache de processador, cache específicos para instruções e dados, cache de múltiplos níveis, mas o conceito básico é o mesmo: ao deparar com uma necessidade de uma informação da memória principal, o cache será consultado antes, se a informação estiver lá ela já é devolvida para o processador (cache hit). Se a informação não estiver no cache (cache miss), ela é trazida da memória principal para o cache e de lá para o processador. A memória cache, assim como a memória principal, também é volátil. Memória Secundária Independente da quantidade de memória principal que o computador disponha, ela nunca será suficiente para armazenar todos os dados que são necessários. Para isso usam-se os meios de armazenamento de massa ou memória secundária. Para se ter uma idéia de ordem de grandeza, um computador comercial comum atualmente possui cerca de 2GB de memória principal enquanto que um disco rígido comum hoje possui em torno de 160GB, sendo que já existem discos para uso em computadores comerciais comuns com 1TB de capacidade. Hierarquias de memória Um computador possui vários tipos de memória, desde os registradores até os discos óticos (DVD, Blu Ray, etc). Existe uma hierarquia entre estes vários tipos de memória, conforme a figura abaixo. Hierarquia de memória de cinco níveis Quanto mais alto vamos na pirâmide acima, maior é a velocidade da memória, maior o custo por byte e menor a quantidade de memória disponível no computador. Quanto mais para baixo vamos, menor a velocidade, menor o custo e maior a quantidade disponível em um computador. A maior parte dos meios de memória secundária atualmente é não volátil, ou seja, mantém os dados gravados até que um usuário apague estes dados. Devemos ter cuidado em usar o termo “permanente” ao se tratar de meios de armazenamento, pois nenhum meio de armazenamento atual consegue garantir a preservação dos dados após um período de alguns anos. Discos magnéticos O disco magnético é o meio mais comum de armazenamento atualmente. Isso se deve ao fato de que o disco hoje é o que fornece melhor relação custo benefício. Isto talvez mude no futuro próximo, graças à popularização dos discos de estado sólido (SSD – Solid State Disk) baseados em memória flash. Hoje já é comum encontrarmos este tipo de dispositivo com cerca de 4GB a 16GB. Ainda é pouco se comparado aos 160GB que um disco magnético possui, mas com o aumento de capacidade e barateamento destes tipos de dispositivo, em breve ele poderá superar o disco magnético em popularidade. Um disco magnético sem a proteção metálica Como podemos ver na imagem acima, o disco magnético é composto por discos e braços de acesso, além de motores responsáveis por girar os discos e movimentar o braço de acesso. O princípio básico de funcionamento do disco magnético é simples: os discos giram um único sentido em velocidade constante, e as cabeças de leitura e gravação se aproximam e afastam do centro do disco, de modo que eles conseguem atingir toda a área útil do disco. Área esta que é coberta por um material magnético que é pode ser sensibilizado pelo campo gerado pela cabeça de leitura. Dependendo da direção em que estiverem direcionadas estas partículas, elas podem simbolizar um bit 0 ou um bit 1. A área útil do disco é dividida em setores. Um setor normalmente corresponde a 512bytes é separado do próximo setor por uma área não utilizada chamada lacuna. Como estamos lidando com campos magnéticos, nem toda a superfície pode ser utilizada, pois corremoso risco de afetar outros setores além do desejado, se eles estiverem muito próximos. Os setores são agrupados em círculos concêntricos denominados trilhas. Representação da geometria do disco magnético Além de trilhas e setores, o outro conceito importante na geometria do disco magnético é o cilindro. Um disco magnético normalmente é composto por vários discos, denominados platters. Cada superfície de cada disco possui uma cabeça de leitura e gravação própria. Como todos os braços de todas as cabeças de leitura e gravação se movimentam ao mesmo tempo, quando a cabeça de leitura da primeira superfície estiver sobre a trilha n, todas as cabeças de leitura estarão sobre as trilhas n de suas respectivas superfícies. A este conjunto de trilhas que pode acessada sem que seja necessário movimentar a cabeça de leitura e gravação se dá o nome de cilindro. Este é um conceito importante quando se tenta aumentar o desempenho de discos, pois por se tratar de um dispositivo mecânico, o tempo que a cabeça de leitura leva para se mover pela superfície do disco é extremamente lento. Se um determinado conjunto de dados estiver num mesmo cilindro, o tempo de acesso a estes dados será menor. Conjuntos de caracteres É claro que os computadores têm que lidar com todo tipo de informações, e não apenas números, mas como veremos na seção sobre circuitos digitais, o computador só consegue de fato lidar com valores binários. A solução para permitir que os computadores consigam lidar com informações não numéricas é a criação de tabelas de conversão. Estas tabelas são chamadas de conjuntos de caracteres. Um dos padrões mais conhecidos é o ASCII (American Standard Code for Information Interchange – código padrão americano para intercâmbio de informações). O ASCII usa sete bits para descrever os caracteres, o que permite 128 combinações. Parte do padrão ASCII Conforme podemos perceber, este padrão é bastante limitado, ele contém apenas os caracteres da língua inglesa, não contém os acentos necessários par ao português e nem podemos começar a pensar nos idiomas que usam alfabetos diferentes como o russo ou o árabe. Como os computadores hoje são usados em todo mundo e fabricantes desejam que seus produtos sejam usados globalmente, o ASCII não pode mais ser considerado como um padrão aceitável. Por este motivo, foi criado outro padrão, chamado UNICODE, patrocinado por um grupo de empresas. O UNICODE usa 16 bits para descrever cada caractere, o que permite até 65.536 caracteres diferentes. Mesmo essa quantidade é insuficiente para abarcar todos os idiomas falados na Terra. Lingüistas estimam que seriam necessários cerca de 200.000 caracteres para suportar todos os idiomas falados atualmente. O padrão UNICODE hoje cobre cerca de 75 alfabetos. Além dos caracteres latinos, são suportados cirílico, grego, armênio, hebraico, devanágari, gurmuqui, oriá, telugu e kanada, entre outros.
Compartilhar