Análises e Notícias

100x26.png

Semi-condutores (1/3): Zeros e Uns

“Eu não tenho medo dos computadores, tenho medo da falta deles.” Isaac Asimov

Este é o primeiro de 3 artigos no qual pretendemos explorar alguns aspectos do universo de semicondutores. A melhor maneira de entender como eles funcionam é começar pelos seus aspectos mais fundamentais.

Ninguém precisa ter conhecimento técnico profundo para entender como um circuito funciona. Nós os utilizamos todos os dias. Por exemplo, uma torneira de água ou um interruptor pode fazer parte de um circuito.

Basicamente, os computadores usam em seus núcleos processadores com milhões de interruptores, determinando se um circuito está aberto ou fechado. Por definição aberto é igual a 0, fechado igual a 1.

Desse modo, sabemos que os computadores utilizam 0s e 1s, mas agora como um código de programação é traduzido nisto? Bem, em alguma aula de matemática perdida na nossa adolescência, alguém deve ter ao menos mencionado base de números. Utilizamos no nosso dia a dia Base 10, mas os computadores utilizam a base Binária, ou seja 0 ou 1.

Isso é particularmente interessante, pois através de 0s e 1s somos capazes de representar números, letras e outros caracteres. Vamos entender como isso funciona:

E assim por diante….Essas “casas” chamamos de bits. Um conjunto de 8 casas é 1 byte. Você não precisa fazer essa conta, mas é importante saber que o número 255 em base binária é 11111111, ou seja, ocupamos as oito casas ou bits com números 1.

E agora o que fazemos com isso? Um grupo de cientistas da computação criaram uma tabela que traduz algarismos em números. Essa “tabela”, chamada ASCII virou a convenção para traduzirmos a linguagem dos computadores para a nossa. Essa tabela contém 256 “casas” ou posições (0 a 255).

 

 

Convertendo por exemplo a palavra “CASA” para binário teríamos

C = 01000011 A= 01000001 S= 01010011 A=01000001

Cada BYTE armazena um caractere!

 

 

 

Agora que você já sabe como nos comunicamos com os computadores, vamos falar mais à frente como os processadores funcionam.

*PS: A frase do Asimov está escrita em base binária na figura do artigo.

Nada melhor que um trabalho em grupo

Qual a diferença entre 8-bit, 32-bit e 64-bit? Basicamente ele nos diz quanto de memória podemos acessar de uma só vez. Um sistema de 32-bit pode acessar 232 endereços de memória, ou seja, mais ou menos 4GB de RAM. Um de 64-bit acessa 264 ou 1bilhão de gigabytes, assim, um computador de 8-bit pode lidar com números de 0 a 255 de cada vez, enquanto que um de 32-bit pode lidar com 0 a 4.294.967.295

A maior diferença destes processadores (8, 32 ou 64 bits) é a velocidade de cálculos que eles podem realizar por segundo. A questão é que conforme aumentamos a velocidade, maior será o consumo de energia e o calor gerado.

Conforme a indústria evolui, as empresas entenderam como seus usuários utilizam as máquinas e como melhorar o desenvolvimento de alguns softwares. Hoje em dia escutamos música, navegamos pela internet, trabalhamos em processadores de texto, planilhas, temos impressoras e outros periféricos ligados ao computador. Todos ao mesmo tempo.

Antigamente era normal o computador “travar” quando a gente utilizava vários aplicativos ao mesmo tempo. Para exemplificar como os processadores funcionavam, imagine que você está no supermercado com apenas um único caixa. Esse caixa só vai registrar um item por vez. Se cada compra tiver poucos itens, a fila andará rápido, agora, se o carrinho estiver cheio…

Essa analogia vale para o processamento das atividades do computador. Com um só núcleo (caixa) as tarefas (itens) simples eram processadas rapidamente, já as mais complexas ou simultâneas, causavam o travamento. Os mais jovens não vão entender o que era perder uma tarde imprimindo um trabalho acadêmico.

A indústria repensou determinados processos

Se o problema era o caixa, vamos colocar mais de um, assim enquanto um caixa estiver registrando uma compra grande os outros podem ir processando outras compras. Esse é o processamento Multi Núcleo (Multi-core) ou paralelo.

Também, pensou-se que enquanto uma compra é registrada, a próxima compra já pode ser retirada do carrinho e colocada na esteira. Assim que o próximo caixa estiver pronto, você não perderá tempo colocando os itens na esteira, chamaremos isso de Memória Cache. Ela fica dentro do próprio processador.

Por último, eles pensaram o seguinte: por que deixar um caixa esperando o cliente efetuar o pagamento? Assim criou-se processos MultiThreat ou Concorrencial, que nada mais é do que ir processando itens enquanto o caixa aguarda o pagamento da compra anterior.

Quando usamos múltiplos Núcleos, é feito o processamento paralelo, ou seja, várias contas são feitas ao mesmo tempo. Quando estamos usando duas esteiras para o mesmo caixa, estamos fazendo operações concorrenciais. Essas evoluções nos computadores melhoraram bastante a performance dos computadores sem necessariamente melhorar a velocidade do núcleo (Clock).

Nos últimos anos a AMD explorou muito essas tecnologias e tem tido um desempenho superior em muitas aplicações apesar da Intel ter o processador mais rápido. Nem todos os softwares utilizam o benefício integral destas tecnologias, mas isso tem mudado. Não é à toa que a AMD tem roubado participação de mercado e está muito bem posicionada entre os usuários domésticos.

É chato mas você tem que saber….

Como vimos anteriormente, os processadores “entendem” representações de 0 e 1s, mas eles têm maneiras diferentes de interpretação. Existem duas arquiteturas amplamente utilizadas atualmente entre os processadores: CISC e RISC.

CISC (Complex Instruction Set Computers) essa arquitetura tem como objetivo completar tarefas com a menor quantidade de linhas de código possível. Para isso o processador vem preparado com uma série de instruções pré-determinadas. A vantagem disto é que o compilador tem pouco trabalho para traduzir as linhas de código, uma vez que o processador já tem muitas funções pré-determinadas.

RISC (Reduced Instructions Set Computers) a abordagem deste design é utilizar instruções simples, mas como são comandos diferentes, é necessária mais memória para armazenar as instruções. O compilador tem muito mais trabalho para converter as linhas de código para esta forma.

Quando a Intel lançou a linha 8086(em 1977), o que hoje chamamos de X86, as memórias eram muito caras. Um 1MB de memória RAM naquela época custava dezenas de milhares de dólares, atualmente custa poucos centavos. Por isso fazia muito sentido colocar essas instruções no núcleo do processador, pois reduzia a quantidade de memória necessária. A indústria de PCs utilizou a arquitetura CISC como padrão por décadas.

O compilador é um programa que processa uma linguagem de programação (Java, Pyhton, C, etc…) e o traduz em linguagem de máquina.

No segundo artigo desta série, abordaremos as estratégias adotadas por algumas das principais empresas da indústria e seu posicionamento.

Veja também

seta-esquerda-cinza.png
seta-esquerda-verde.png
seta-direita-cinza.png
seta-direita-verde.png
100x57.png

Superprevisões

Philip E. Tetlock e Dan Gardner Que tipo de previs...

100x57.png

Agosto 2020

Clique e acesse Carta Mensal Agosto 2020

100x57.png

Criatividade S.A.

Ed Catmull e Amy Wallace A Pixar é um sinônimo d...

100x57.png

O Projeto Desfazer

Michael Lewis O livro conta a história de dois pe...

100x57.png

Setembro 2021

Clique e acesse Carta Mensal Setembro 2021