6 Comentários

Como os computadores fazem contas?

Você certamente já deve ter ouvido falar que, por “baixo dos panos” do computador, tudo é 0 e 1. Mas o que isso realmente significa?

Os 0s e 1s são só uma abstração para simbolizar a ausência ou a presença de corrente elétrica em dado condutor.

Imagino que isso não deve ter ajudado muito. Então, para começar a explicar, vamos começar pela menor unidade funcional da computação: os transistores. Os transistores estão para a Computação, assim como as partículas estão para a Física e as células para a Biologia.

Transistores

Os transistores foram inventados por três cientistas do Bell Labs em 1947, sendo eles o John Bardeen, Walter Brattain e Willian Shockley.

Tal componente funciona como um interruptor que pode ser ligado ou desligado, ao aplicar uma corrente elétrica através de um contato de controle. Geralmente, transistores possuem três conexões separadas por algum material que às vezes conduz eletricidade e outras vezes não: um semicondutor. Nomeando cada uma dessas conexões como A, B e C, por exemplo, é possível fazer com que a condutividade do material semicondutor seja manipulada, e assim interromper ou fazer fluir uma corrente elétrica de A para C, ao aplicar uma carga elétrica em B.

O símbolo que representa um transistor pode ser visualizado na Figura 1. Conforme simbolizado na imagem, é possível manipular o fluxo de corrente que se passa do pino C (Coletor) para o E (Emissor), a partir da carga elétrica aplicada em B (Base).

Figura 1. Simbologia Transistor (Foto: [1]).

Na vida real, os transistores podem se parecer conforme ilustra a Figura 2, ou podem ainda ser feitos em cima de fatias de silício através de um complexo processo chamado de dopagem (Figura 3). Com esses procedimentos, é possível fazer transistores com apenas algumas dezenas de átomos, e agrupando bilhões deles em um único chip. E é assim que um processador é feito.

Figura 2 - Transistores físicos (Fonte: Wikipedia).
Figura 3 - Fatia de silício (Fonte: [2]).

Nas simulações, será utilizado o símbolo conforme ilustrado na Figura 4 para representar um transistor.

Figura 4 - Transistor.

Como explicado, é possível manipular os transistores para que possam, em suas saídas, fluir corrente elétrica ou não. Como eles funcionam como interruptores, se faz possível então ter dois estados na saída: ligado e desligado.

E com isso é possível responder uma pergunta proposta neste artigo: “Você certamente já deve ter ouvido falar que, por “de baixo dos panos” do computador, tudo é: 0 e 1. Mas o que isso realmente significa?”. Como dito previamente, os 0s e 1s são só uma abstração para simbolizar a ausência ou a presença de corrente elétrica em dado condutor. Mais ainda, representam o estado de ligado ou desligado. Bem como 0s e 1s representam também falso e verdadeiro.

De acordo com a Figura 5, é possível observar o funcionamento destas representações no transistor. Na simulação, há uma fonte de energia simbolizada por um pequeno triangulo. A corrente é representada pela coloração verde no condutor. O LED é simbolizado pelo círculo, que fica vermelho quando aceso. O “0”, como dito, representa falso e o “1” verdadeiro. Assim, quando aplicamos “0” no eletrodo de controle do transistor, a corrente elétrica não flui para o LED. Ao aplicar “1”, a corrente flui e faz com que o LED acenda.

Figura 5 - Funcionamento do transistor.

Essa representação acontece por conta de um ramo da matemática que lida exclusivamente com valores de verdadeiros e falsos. Esse ramo já havia estabelecido todas as regras e operações para manipulá-los, e este é chamado de Álgebra Booleana. George Boole, cujo nome mais tarde foi usado para batizar a Álgebra Booleana, foi um matemático do século XVIII.

Essa representação é chamada de binário. Com isso, mesmo com apenas dois estados de eletricidade, é possível representar informações importantes. Nos computadores, um estado ligado, quando a eletricidade está fluindo, representa verdadeiro. O estado desligado, sem eletricidade fluindo, representa falso. Para simplificar, utiliza-se 1 e 0 para representar binários, em vez de “verdadeiro” e “falso”. São somente expressões diferentes para a mesma coisa.

Existem três operações fundamentais em Álgebra Booleana: operação NÃO, operação E e operação OU. Entenderemos o significado dessas operações lógicas a partir de uma analogia feita na Figura 6 e explicada a seguir.

Figura 6 - Analogia Operações “OU” à esquerda e “E” à direita.

A partir das figuras, imagine uma corrente elétrica fluindo do +, passando pelo condutor, então pelos interruptores (A e/ou B) e acendendo a lâmpada que é representada pelo círculo com o X. Caso queira acender a lâmpada do exemplo à esquerda, pode-se tanto fechar a chave A, quanto a B. No caso do outro exemplo, é necessário fechar tanto a chave A, quanto a chave B para fazer com que a lâmpada seja acesa.

Vamos substituir então as chaves das imagens anteriores por transistores, conforme Figura 7 e Figura 8. As cargas elétricas são simuladas a partir dos pinos A e B. A corrente elétrica é representada pela coloração verde nos condutores. A saída S é simulada por um LED, que fica vermelho quando está ligado.

Figura 7 - Analogia da operação “E” com transistores.
Figura 8 - Analogia da operação OU com transistores.

Logo, é possível visualizar, na Figura 7, que quando o transistor “A” e o “B” são 1/verdadeiro, a corrente consegue fluir até o LED. Com isso, podemos entender uma das operações da lógica booleana, a operação “E”. Com essa operação, a saída só será verdadeira se as entradas “A” e “B” forem verdadeiras.

Já na Figura 8, é necessário que só o transistor “A” ou só o “B” sejam verdadeiros. Com isso, podemos entender outra operação da lógica booleana, a operação “OU”. Com esta, a saída será verdadeira se a entrada “A” for verdadeira ou se a entrada “B” for verdadeira.

De agora em diante, não nos preocuparemos mais sobre as associações de transistores que compõem essas operações lógicas. Vamos subir um nível de abstração e então chamaremos de portas lógicas cada unidade de operação booleana.

Portas lógicas

A partir de então, utilizaremos simbologias para representar a porta “E” e “OU”, conforme representado na Figura 9 e Figura 10.

Além das operações “E” e “OU”, há também a operação “NÃO”. Essa operação tem sua saída verdadeira quando sua entrada é falsa, e tem sua saída falsa quando sua entrada é verdadeira (Figura 11).

Figura 9 - Porta “E”.
Figura 10 - Porta “OU”.
Figura 11 - Porta “NÃO”.

Com estes novos símbolos, fica bem mais fácil interpretar as operações lógicas realizadas em dado circuito. Pense, então, que cada porta lógica dessa é uma pequena “caixa” em que estão guardados os transistores.

Na Figura 12, na Figura 13 e na Figura 14 há simulações do funcionamento de cada porta lógica. Assim, exemplificando as operações, a saída da porta “E” só é verdadeira quando as entradas “A” e “B” são verdadeiras. Na porta “OU”, a saída é verdadeira quando “A” ou “B” são verdadeiras. Na porta “NÃO”, a saída é verdadeira quando a entrada “A” é falsa e vice-versa.

Figura 12 - Funcionamento da porta “E”.
Figura 13 - Funcionamento da porta “OU”.
Figura 14 - Funcionamento da porta “NÃO.

Vimos até aqui como é possível executar operações lógicas com estas portas fundamentais. Mas como é possível fazer com que estas executem operações aritméticas?

Aritmética booleana

Para entendermos como a aritmética booleana funciona, veremos antes sobre base binária.

Para isso, vamos criar um paralelo da base binária com a base que mais utilizamos: a decimal. Pensemos então em como funciona nossa base decimal, que possuem dez símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8 e 9. E assim quando chegamos no último símbolo, acontece um “estouro”, ou seja, usamos o primeiro símbolo (0) e do seu lado o próximo símbolo (1), passando assim, da unidade para o decimal.

Com a base binária, a regra é a mesma, só que com somente dois símbolos: 0 e 1.

Vamos contar então até 12, com a base decimal lado a lado com a base binária para melhor visualizar:

00
11
210
311
4100
5101
6110
7111
81000
91001
101010
111011

Logo, quando somamos, na base decimal, 9 + 2, temos o resultado 1 e um “vai 1”. Ou seja: 11. Quando somamos, na base binária, 1 + 1, temos o resultado 0, e um “vai 1”. Ou seja, 10 (lê-se um zero). Assim:

0 + 0 = 0

0 + 1 = 1

1 + 0 = 1

1 + 1 = 10 (0 e “vai 1”)

Sabendo disso, podemos construir um circuito com portas lógicas que seja capaz de executar essa operação. Esse circuito é demonstrado na Figura 15.

Figura 15 - Associação de portas lógicas para adição.

Podemos ainda, assim como fizemos quando as associações de transistores se tornaram portas lógicas, tornar associações de portas lógicas fundamentais em outras portas lógicas mais complexas. Desta forma, podemos abstrair a associação anterior para uma nova porta conforme demonstrada na Figura 16. Essa porta demonstrada é chamada de “Ou-Exclusivo”.

Figura 16 - Porta “OU-Exclusivo”.

Como é possível observar nas simulações da Figura 17, a saída é verdadeira se e somente se as entradas “A” e “B” forem diferentes. Exatamente a função lógica necessária para somar dois números na base binária.

Porém, temos um problema! Sabemos que a soma, na base binária, de 1 + 1 é igual a 10. Todavia, no exemplo anterior, o resultado retorna só o 0, sem o “vai 1”.

Para isso, precisamos aprimorar um pouco mais o circuito. É possível observar que o “vai 1” só deve acontecer quando o “A” for verdadeiro e o “B” também. Para isso, temos uma porta que podemos associar às entradas para termos esse resultado: a porta E.

Na Figura 18 é possível visualizar as simulações do nosso circuito completo.

Figura 18 - Circuito capaz de realizar adições.

Pronto! Agora temos um circuito perfeitamente funcional capaz de somar dois algarismos na base binária.

Podemos ainda subir mais um nível de abstração e colocarmos todo esse circuito em mais uma “caixinha” e chamá-la de circuito meio-somador. Se adicionarmos mais uma entrada no nosso meio-somador, para que este seja capaz de adicionar 2 algarismos mais o “vai 1”, temos então um somador-completo, conforme representado na Figura 19.

Figura 19 - Circuito somador-completo.

Convenhamos que para a maioria dos nossos problemas atuais que os computadores precisam resolver, não é muito útil que ele seja capaz de somar somente um bit. Porém, podemos também associá-los para que desempenham tarefas mais complexas. Na Figura 20 é possível observar uma associação de somadores que constituem um somador de quatro bits. No exemplo, o circuito está executando a operação 0111 + 0110 e retornando a saída 1101. Na base decimal, estes números representam 7 + 6 = 13.

Figura 20 - Associação de circuitos somador completo.

Todos esses símbolos são úteis para diminuir a complexidade que isso traria se demonstrássemos todos esses componentes ao nível de transistor. Com isso, desde que se entenda como esses blocos fundamentais funcionam, não é mais necessário nos preocuparmos com os transistores que constituem essas portas, ou como os elétrons estão fluindo através deles. Assim, subindo camada por camada de abstração.

Considerações Finais

Com a evolução dos computadores, estes sistemas se tornaram cada vez mais complexos. Hoje os processadores executam diversas operações e com até 64 bits de largura.

Além do bloco de adição exemplificado neste artigo, em um processador há várias outras unidades como subtratores, multiplicadores, divisores, unidade de controle, etc.

Nos processadores atuais, que há nos nossos computadores, smartphones e afins, há bilhões destes transistores aqui descritos. Apesar de parecerem bem complicados, seu funcionamento básico é bem simples. O que torna tudo bem mais complexo e capaz de realizar diversas operações são suas várias camadas de abstração. E são estas camadas de abstração que são impressionantes! Pois são como uma boneca russa que vai ficando menor e menor à medida que vai se aprofundando.

Referências

[1] NicePNG. 2020. Vector - Transistor Symbol. Disponível em: https://www.nicepng.com/ourpic/u2q8e6w7w7u2r5u2_vector-transistor-symbol>. Acesso em 25/05/2020.

[2] Computer Business Review. 2020. Silicon. Disponível em: <https://www.cbronline.com/wp-content/uploads/2020/01/silicon1.jpg>. Acesso em 01/06/2020.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » Como os computadores fazem contas?
Comentários:
Notificações
Notificar
guest
6 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
BRUNO RESENDE
BRUNO ALVES RESENDE
09/07/2020 21:40

Cara! Sensacional! De verdade mesmo!

Caio Oliveira
Caio Oliveira
Reply to  BRUNO ALVES RESENDE
10/07/2020 11:41

Poxa Bruno, muito obrigado! Fico bastante feliz!

Rubens Junior
18/06/2020 13:35

Ótimo artigo!

Augusto Fadanelli
Augusto Fadanelli
15/06/2020 21:05

Muito bem explicado pra quem é newbie como eu! rs
Parabéns pelo artigo.

Talvez você goste:

Séries

Menu

WEBINAR
 
Debugging
em Linux embarcado

 

Data: 30/09 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link