Sei sulla pagina 1di 5

Introdução à Arquitetura de Computadores

Hoje em dia, computadores estão por toda a parte. Uma pessoa comum utiliza-se deles
diversas vezes ao dia, muitas vezes sem mesmo se dar conta disso. Pegue por exemplo
um aparelho celular. Ele é um computador apesar de normalmente não pensarmos nele
como um. Os aparelhos celulares de hoje em dia possuem muito mais capacidade do
que os primeiros computadores. Carros também costumam ser equipados com
computadores que entre outras coisas, podem controlar a emissão de gazes poluentes,
controlar o consumo de combustível e aumentar a segurança de passageiros. Ao usar
muitos eletrodomésticos, também estamos usando computadores que costumam vir
embarcados em alguns deles. Para sacar dinheiro no banco, utilizamos caixas
eletrônicos, ou seja: computadores. Video-games e calculadoras também são exemplos
de computadores dedicados à realização de uma determinada tarefa.

Computadores facilitam muito a nossa vida e são responsáveis por muitos aspectos de
nossa sociedade. Eles nos ajudam em praticamente qualquer tarefa. Do projeto de um
prédio até avançadas pesquisas científicas.

Neste wikicurso, você irá aprender os mistérios por trás do funcionamento destas
fantásticas máquinas mostrando todos os segredos que se escondem por trás do gabinete
de seu computador (e celular, e video-game, e calculadora...) e do funcionamento de um
processador.

[editar] Introdução aos Programas de Computador

Computadores funcionam através de impulsos elétricos. Uma corrente elétrica só pode


possuir dois estados diferentes: ativada e desativada. Por causa disso, computadores só
são capazes de entender os sinais "ativado" e "desativado" que daqui para a frente serão
chamados respectivamente de "1" e "0".

Podemos considerar o "1" e o "0" como as duas únicas letras que um computador pode
usar para se comunicar. Isso contrasta bastante com o alfabeto do português, onde
contamos com 23 letras. Entretanto, da mesma forma que com 23 letras podemos
escrever infinitas palavras, com apenas duas, também conseguimos. De agora em
diante, passaremos a usar o termo "bit" ao invés de "letra" quando nos referirmos à
"linguagem" falada por computadores.

Como computadores são máquinas, eles são incapazes de fazer qualquer coisa que não
foram instruídos a fazer. Um programa de computador (também chamado de software
ou logicial) nada mais é do que um texto que explica à um computador o que ele deve
fazer. Por exemplo, os bits 10000110010100000 representam uma instrução para o
computador. O que ele significa depende de cada modelo de computador, pois cada um
fala a sua própria linguagem. Ele poderia significar, por exemplo, uma instrução que
indica que dois números que estão na memória da máquina sejam somados.

Os primeiros programadores de computadores precisavam ficar se comunicando com


computadores utilizzando-se apenas esses sinais binários. Imagine o quão chato e
trabalhoso era programar naquela época. Só para você ter uma idéia, abaixo
mostraremos um trecho de programa que serve para trocar de lugar dois números de
memória em um processador do tipo MIPS (ele está escrito em lingüagem de máquina):

0000000001010000100000000000011000000000001000111000011000001100000100
00
1100011000110001000000000000000001000110011110010000000000000000100101
01
1001111001000000000000000001010110001100010000000000000010000000011111
00
0000000000000001000

Precisamos de 235 caracteres para escrevermos uma instrução tão simples na lingüagem
nativa de um processador MIPS. Mas... será que escrevemos tudo certo? Será que não
cometemos nenhum erro? Perceba que além de chata e cansativa, esta lingüagem
também é difícil de ser entendida. É muito fácil cometer erros escrevendo esse monte de
"1" e "0", principalmente porque é difícil de entender o que estamos escrevendo.

Os primeiros programadores, bastante cansados por terem um emprego tão chato que
era escrever "1" e "0" sem parar, começaram a ter idéias para facilitar o trabalho. Uma
idéia muito boa que eles tiveram era substituir cada instrução por algo representado por
letras e que fôsse mais fácil de entender. Depois que eles tivessem escrito o programa
com base em letras, existiria um programa chamado montador que seria responsável
por traduzir as letras em seqüências de 1s e 0s. O programa do exemplo anterior, escrito
com letras, ficaria assim (ele está escrito em lingüagem de montagem):

swap:
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31

Apesar desta nova linguagem ainda parecer complicada, imediatamente é possível


perceber que é mais fácil trabalhar com ela do que com lingüagem de máquina. Nela,
cada instrução ocupa apenas uma linha e o nome da instrução é sempre representado por
um conjunto de letras. Dessa forma, é mais fácil de programar, pois caso cometamos
algum erro, ele é muito mais fácil de detectar. Além disso, a instrução que em
linguagem de máquina precisa de 235 caracteres para ser escrita, em lingüagem de
montagem pode ser escrita com pouco menos de 100 caracteres. É mais rápido
programar assim!

A linguagem de montagem (ou assembly) passou por muitas melhorias com o tempo.
Entretanto, ela ainda é demasiadamente complicada. Ainda dá trabalho para entender o
que queremos dizer com aquelas 7 instruções ali em cima. Foi isso que levou os
primeiros programadores a pensar: "Se nós conseguimos criar um programa que traduz
instruções escritas em linguagem de montagem para linguagem de máquina, então é
possível criar um programa que traduza algo escrito em uma lingüagem mais próxima
da linguagem humana para a lingüagem de montagem...". E foi isso que eles fizeram.

Com o tempo, uma série de outras lingüagens de alto nível foram criadas. O objetivo
delas era fazer com que humanos pudessem escrever comandos para os computadores
de uma forma mais confortável. Um programa chamado compilador firaria responsável
por traduzir a lingüagem de alto nível para a lingüagem de montagem e um montador
traduziria a lingüagem de montagem para a lingüagem de máquina. Abaixo você vê o
mesmo trecho de programa mostrado acima escrito na lingüagem C:

swap(int v[], int k){


int temp;
temp=v[k];
v[k]=v[k+1];
v[k+1]=temp;
}

Dessa vez consegüimos nos expressar em apenas 65 caracteres. O programa escrito


desta forma é ainda mais legível que o anterior.

Resumindo: computadores só são capazes de entender lingüagem de máquina (1 e 0).


Toda lingüagem de máquina (cada modelo de máquina fala uma língua diferente) pode
ser expressa em uma linguagem de montagem (assembly), que é mais fácil de ser
entendida. Para que programas em assembly possam ser entendidos pelo computador,
eles precisam ser traduzidos com a ajuda de programas chamados montadores.
Normalmente, quando nós programamos, usamos uma lingüagem menos rudimentar
que o assembly. Usamos uma lingüagem de alto nível (existem centenas delas). Tudo
aquilo que é escrito em lingüagens de alto nível precisa ser passado para um programa
chamado compilador que traduz o que foi escrito para assembly (ou então traduz direto
para lingüagem de máquina).

As vantagens de alto nível são bastante usadas pelos seguintes motivos:

• São mais fáceis de serem aprendidas e usadas que o assembly ou lingüagem de


máquina.
• Criar programas em lingüagens de alto nível é mais rápido, pois precisamos de
menos caracteres e cometemos menos erros.
• Programas escritos em lingüagens de alto nível podem ser entendidos por
qualquer máquina, desde que passem por um compilador e montador
desenvolvido para aquela máquina. Já programas escritos em assembly ou
lingüagem de máquina só funcionarão nas máquinas para as quais foram
projetados. Não podem ser passados para máquinas de modelos diferentes.

Além de instruções escritas em alguma lingüagem, programadores freqüentemente


usam algo chamado bibliotecas. As bibliotecas nada mais são do que instruções para as
máquinas que são muito comuns em muitos tipos de programas. Graças à elas, todos os
programas que precisam fazer alguma tarefa (como imprimir texto em uma folha de
papel) não precisam especificar o que o computador deve fazer para realizar a
impressão com sucesso. Basta indicar que deseja-se usar um conjunto de instruções de
uma biblioteca que indica como fazer isso. Dessa forma, quando estamos programando,
não precisamos escrever tudo aquilo que o computador precisa fazer para realizar uma
tarefa. Nós podemos simplismente reaproveitar instruções usadas por outros programas.

Para gerenciar as bibliotecas usadas pelo computador e também permitir que mais de
um programa utilize a máquina ao mesmo tempo, também foram criados programas
chamados Sistemas Operacionais. A tarefa destes programas é justamente gerenciar
recursos da máquina. Alguns exemplos de Sistemas Operacionais são o MS-DOS,
FreeDOS, Windows, ReactOS, Unix, GNU/Linux, BSD, MacOS X e Solaris.

[editar] Introdução ao Hardware

Abaixo mostraremos alguns dos dispositivos mais comuns que são usados por
computadores para receber dados de usuários (dispositivos de entrada) e passar dados
para o usuário (dispositivos de saída).

[editar] O Mouse/Rato

Interior de um rato mecânico. Legenda:


1. A bola, que faz girar a roldana;
2. Roldana que irá alterar a passagem de luz entre o LED e o sensor;
3. Sensor fotoeléctrico
4. Botão de clique (esquerdo);
5. LED.

O mouse (rato, em português europeu) é um dispositivo que funciona como um


apontador para o que é mostrado no monitor de um usuário.

Ele foi concebido por Doug Engelbart nos anos 60. Segundo Doug, ele estava assistindo
uma palestra tão chata sobre computadores que começou a sonhar acordado. Foi então
que imaginou a implementação do mouse. O seu primeiro protótipo foi construído em
1967. Em 1973, a Apple passou a incluir um mouse em seus computadores Macintosh e
durante os anos 80, ele já foi completamente popularizado.

Mouses mecânicos funcionam com a ajuda de uma esfera capaz de girar livremente. Ao
girar, ela movimenta dois discos cujos movimentos são detectados por um circuito que
passa a informação para um computador. Mouses óticos funcionam emitindo um feixe
de luz e detectando a reflexão deste feixe. Com isso, eles podem detectar os
movimentos em uma superfície não-transparente. Mouses inerciais funcionam através
de um acelerômetro interno que capta os movimentos. Mouses em 3D que permitem
que o usuário movam o apontador na tela apontando pelo ar funcionam através de
detectores de ultra-som. Atualmente, os mouses mais comuns são os mecânicos e os
óticos.

[editar] O Monitor
Um monitor LCD

O monitor consiste em uma tela (ecrã em português europeu) capaz de exibir desenhos,
textos e diversas informações deste tipo ao usuário.

O modelo mais primitivo de monitor é representado por uma matriz de bits com m
linhas e n colunas. Um monitor desse tipo só é capaz de exibir as cores branco (que
pode ser representado por 0) e preto (que pode ser representado por 1). Para monitores
capazes de exibir mais cores, cada elemento da matriz deve armazenar vários bits, sendo
cada combinação de bits uma cor diferente.

Os monitores mais comuns são os CRT e os LCDs. Os CRT (tubos de raios catódicos)
funcionam graças à um feixe de elétrons disparado por um canhão que percorre toda a
tela, uma linha de cada vez. O feixe de elétrons é responsável por fazer desenhos na tela
e costuma imprimir de 30 à 70 novos quadros por segundo. Monitores de LCD (tela de
cristal líquido) costumam ser bem mais finos e são usados em computadores portáteis.
Eles funcionam graças à uma película bastante fina de cristal líquido cujas moléculas
adquirem uma ordenação diferente ao serem percorridas por corrente elétrica.

Obtida de "http://pt.wikiversity.org/wiki/Arquitetura_de_Computadores/Introdu
%C3%A7%C3%A3o"

Potrebbero piacerti anche