Instruction Set Architecture ou Como Ensinar uma Pedra a Pensar
Instruction Set Architecture
Quando nos referimos à magia da computação, estamos falando da maneira como os computadores transformam correntes elétricas em instruções lógicas e, eventualmente, nos software que usamos todos os dias. Ou simplesmente na "Arquitetura do Conjunto de Instruções", mais conhecida pela sigla em inglês: ISA (Instruction Set Architecture).
Mas o que exatamente é a ISA? É o conjunto de instruções que um processador de computador entende. É a única coisa que o hardware é capaz de processar. Talvez o ápice da engenharia humana. Ela literalmente nos dá o poder de ensinar uma pedra a pensar.
Como Ensinar uma Pedra a Pensar
Tudo começa com os transistores
Um transistor, em sua essência, é um dispositivo com três 'pinos': a base, o coletor e o emissor. Ao aplicar uma corrente à base, podemos controlar o fluxo de corrente entre o coletor e o emissor. Em outras palavras, quando a corrente é aplicada à base, ela atua como uma "chave", permitindo ou impedindo a passagem de corrente elétrica entre o coletor e o emissor. Esse mecanismo de "ligar e desligar" que forma a base da lógica binária: 1 para "ligado" e 0 para "desligado".
Do Simples ao Complexo
Imagine que os transistores são como tijolos. Isolados, têm pouca utilidade, mas quando combinados, podem formar estruturas mais complexas. Ao combinarmos transistores, criamos portas lógicas, como AND, OR e NOT. Estas portas realizam operações lógicas básicas.
AND (E): Esta porta retorna verdadeiro (1) - permite a passagem de corrente elétrica - apenas quando ambas as suas entradas são verdadeiras.
Entrada A | Entrada B | Saída |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
OR (OU): Esta porta retorna verdadeiro (1) - permite a passagem de corrente elétrica - quando pelo menos uma de suas entradas é verdadeira.
Entrada A | Entrada B | Saída |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
NOT (NÃO): Esta porta inverte o valor de entrada.
Entrada | Saída |
---|---|
0 | 1 |
1 | 0 |
Do Complexo ao Extraordinário
Combinando de certas maneiras estas postas lógicas, podemos fazer cálculos e tomar decisões baseadas em diferentes condições. A Unidade Lógica Aritmética é fundamentalmente o núcleo de processamento da CPU, ou apenas uma calculadora que realiza operações aritméticas e lógicas básicas.
Então, como decidimos se a ULA deve somar dois números ou compará-los? Aqui entra a Unidade de Controle. A Unidade de Controle direciona a corrente elétrica para o 'caminho' certo dentro do CPU. Dependendo das instruções fornecidas, ela habilita ou desabilita certas funções da ULA, determinando, por exemplo, se deve ocorrer uma soma ou uma comparação, ou ainda aonde o resultado deve ser salvo.
Do Fisíco para o Virtual
A Unidade de Controle não decide suas ações arbitrariamente. Ela é guiada por um conjunto de instruções, ou pela Arquitetura de Conjunto de Instruções. A ISA essencialmente direciona a corrente elétrica para os caminhos que ela precisa seguir. Garantindo que quando um programa executa uma operação específica, a corrente elétrica siga por uma trilha uma exata.
Mas o que extamente é uma operação, Trata-se de uma instrução de assembly, que é essencialmente uma representação legível de instrução de máquina. Para ilustrar isso, consideremos um exemplo prático usando a arquitetura MIPS.
A instrução de adição é dada como:
add $t0, $t1, $t2
Ou simplesmente:
opcode | rs | rt | rd | shamt | funct
000000 | 01001 | 01010 | 01000 | 00000 | 100000
Este é apenas um breve vislumbre de como as correntes elétricas se abstraem do mundo físico e se tornam entidades virtuais, código, ou simplesmente matemática.
Para aprender de verdade
Para aqueles que desejam se aprofundar mais e entender realmente o funcionamento dos processadores, há dois livros que se destacam como pilares na literatura de organização de computadores. Juntos, esses dois complementam-se, proporcionando ao estudande uma visão ampla e detalhada da organização de computadores.
-
"Structured Computer Organization", Tanenbaum detalha com maestria e bom humor, desde a lógica de transistores até a estrutura e funcionamento dos sistemas operacionais. É uma abordagem top-down que permite ao leitor apreciar a beleza da complexidade organizada dos computadores.
-
"Computer Organization and Design, Patterson e Hennessy não se limitam apenas à teoria e empregam exemplos práticos e exercícios que permitem aos leitores a oportunidade de experimentar e implementar os conceitos discutido. Diferentes edições do livro abordaram diferentes linguagens assembly.
E para os programadores que estão lendo: a criação de um processador simples não é um feito apenas por gênios da computação ou da engenharia elétrica. É um exercício desafiador, porém viável e recompensador, frequentemente explorado nos melhores cursos universitários de Organização de Computadores.
Se você se auto-intitula um "programador de computador", deve tentar criar um, pelo menos uma vez. Fazer isso não só aprofundará sua compreensão da mecânica fundamental dos computadores, mas também, sem sombra de dúvidas, aprimorará suas habilidades de programação. É a base das bases, e a partir daí, o céu é o limite.
Um abraço e bons estudos!
Este artigo era apenas a introdução de algo maior, mas já se estendeu muito. Os outros tópicos que gostaria de cobrir originamente eram:
- Intel 8086 ao x86 Moderno
- Explorando Outras Arquiteturas
- RISC vs. CISC
- Modelos de Negócios: Intel vs. ARM
- Consolidação do ARM Como o Novo Padrão
- Ascensão do RISC-V e o Futuro
Você tem interesse de ler sobre alguns destes tópicos? Até a próxima.