1. Início
  2. Explorar
  3. Informática
  4. Arquitetura de Computadores

Arquitetura de Computadores – Informática | Tuco-Tuco

Componentes do computador, como CPU, memória e dispositivos de entrada e saída.

Arquitetura de Computadores Definição e Importância da Arquitetura de Computadores Arquitetura de computadores é o campo da ciência da computação que estuda a estrutura, o comportamento e o projeto dos sistemas computacionais sob o ponto de vista do programador e do compilador. Ela define o conjunto de instruções (ISA – Instruction Set Architecture), os tipos de dados, os registradores, o modelo de memória, os mecanismos de entrada/saída e as técnicas de paralelismo. Em outras palavras, a arquitetura é o contrato entre o hardware e o software de baixo nível. A organização (ou microarquitetura) é a implementação concreta da arquitetura, incluindo detalhes como o número de unidades funcionais, o pipeline, a hierarquia de cache, o barramento interno, etc. É possível ter a mesma arquitetura (ex.: x86-64) com diferentes microarquiteturas (Intel Core vs. AMD Ryzen). Para concursos e vestibulares, é fundamental compreender os componentes internos do computador, suas funções e como eles interagem para executar programas. Componentes Básicos: Modelo de Von Neumann A maioria dos computadores modernos segue o modelo de Von Neumann, proposto por John von Neumann em 1945. Os componentes essenciais são: Unidade Central de Processamento (CPU): Executa instruções. Memória principal: Armazena dados e instruções (endereçada por posições). Dispositivos de entrada/saída (E/S): Permitem interação com o ambiente. Barramento: Conjunto de fios que interconecta os componentes. Uma característica fundamental é que instruções e dados compartilham o mesmo espaço de memória (arquitetura stored-program), o que permite que programas sejam tratados como dados (ex.: compiladores, auto-modificação de código – embora raramente usada hoje por questões de segurança e previsibilidade). Existe também a arquitetura Harvard, onde instruções e dados residem em memórias fisicamente separadas, com barramentos distintos (comum em microcontroladores e DSPs). Computadores modernos usam uma arquitetura híbrida: caches separadas para instruções e dados (Harvard no nível da cache), mas memória principal unificada (Von Neumann). Unidade Central de Processamento (CPU) 3.1. Subcomponentes da CPU Unidade de Controle (UC): Busca instruções da memória, decodifica seus códigos de operação (opcode) e gera os sinais de controle que coordenam as demais unidades. Implementa o ciclo de instrução (busca, decodificação, execução, escrita de resultado). Unidade Lógica e Aritmética (ALU): Executa operações aritméticas (adição, subtração, multiplicação, divisão) e lógicas (AND, OR, NOT, XOR, deslocamentos). A ALU opera sobre dados armazenados em registradores. Registradores: Memórias internas de altíssima velocidade (acesso em um ciclo de clock) usadas para armazenar temporariamente: - Registrador de instrução (IR – Instruction Register): Contém a instrução atualmente sendo executada. - Contador de programa (PC – Program Counter): Endereço da próxima instrução a ser buscada. - Ponteiro de pilha (SP – Stack Pointer): Endereço do topo da pilha em memória. - Registradores de uso geral (GPRs): Armazenam operandos e resultados (ex.: RAX, RBX em x86-64; $t0, $s0 em MIPS). - Registradores de status (FLAGS): Bits indicando condições (zero, carry, overflow, sinal) resultantes de operações. 3.2. Ciclo de Instrução (Fetch-Decode-Execute) O ciclo básico de uma CPU não pipeline: Busca (Fetch): A UC coloca o valor do PC no barramento de endereços e emite um sinal de leitura da memória. A instrução é carregada no IR. O PC é incrementado (para o próximo endereço). Decodificação (Decode): A UC decodifica o opcode e determina os operandos (registradores ou endereços de memória). Gera os sinais de controle necessários. Execução (Execute): A UC ativa as unidades apropriadas. Se for uma operação aritmética, os operandos são enviados à ALU; se for um acesso à memória, a UC coordena leitura/escrita; se for um desvio (branch), o PC é atualizado. Escrita (Write-back): O resultado da ALU ou da memória é escrito de volta em um registrador ou na memória. Este ciclo se repete até que o programa termine (ou uma interrupção ocorra). 3.3. Pipeline de Instruções Para aumentar o desempenho, CPUs modernas dividem o ciclo de instrução em estágios independentes e executam várias instruções simultaneamente em diferentes estágios (pipeline). Um pipeline típico de 5 estágios: | Estágio | Operação | |---------|----------| | IF (Instruction Fetch) | Busca instrução da cache/memória | | ID (Instruction Decode) | Decodifica e lê registradores | | EX (Execute) | Executa na ALU ou calcula endereço | | MEM (Memory Access) | Acessa a memória de dados (load/store) | | WB (Write Back) | Escreve o resultado no registrador | Riscos (hazards): Estruturais: Hardware insuficiente (ex.: mesma memória para instrução e dados – resolvido com caches Harvard). Dados: Dependência entre instruções (ex.: instrução seguinte usa resultado da anterior). Soluções: forwarding (encaminhamento), inserção de bolhas (nops), reordenação pelo compilador. Controle: Desvios condicionais (branches). Soluções: predição de desvios (branch prediction), execução especulativa. 3.4. Paralelismo: Superscalar, VLIW, SMT Superscalar: A CPU pode buscar, decodificar e executar múltiplas instruções por ciclo (ex.: 4-way superscalar). Requer múltiplas ALUs e lógica de despacho complexa. VLIW (Very Long Instruction Word): O compilador empacota várias operações em uma instrução longa; o hardware executa todas em paralelo (ex.: processadores Itanium, DSPs). SMT (Simultaneous Multi-Threading): Uma única CPU física executa instruções de duas ou mais threads simultaneamente, compartilhando os recursos do pipeline (ex.: Hyper-Threading da Intel). Memória: Hierarquia e Tipos 4.1. Hierarquia de Memória Para equilibrar velocidade, capacidade e custo, os computadores organizam a memória em níveis: | Nível | Tecnologia | Velocidade (acesso) | Capacidade | Gerenciado por | |-------|------------|----------------------|------------|----------------| | Registradores | flip-flops | ~0,3 ns | centenas de bytes | compilador | | Cache L1 | SRAM | ~1 ns | 32-64 KB | hardware | | Cache L2 | SRAM | ~3-5 ns | 256 KB - 1 MB | hardware | | Cache L3 | SRAM | ~10-20 ns | 2-32 MB | hardware | | Memória RAM | DRAM | ~50-100 ns | 4-128 GB | SO + hardware | | Disco (SSD/HD) | flash/magnético | ~0,1-10 ms | 256 GB - vários TB | SO | O princípio de localidade (temporal e espacial) torna a hierarquia eficaz: a maioria dos acessos se concentra em uma pequena região da memória. 4.2. Memória Cache A cache armazena cópias de blocos (linhas) da memória principal recentemente acessados. Parâmetros: Mapeamento: Direto (cada bloco da RAM vai para uma única linha da cache), associativo por conjunto (um bloco pode ir para um conjunto de linhas), totalmente associativo (qualquer linha). Política de substituição: LRU (Least Recently Used), FIFO, Random. Política de escrita: Write-through (escreve na RAM imediatamente) vs. write-back (escreve apenas quando a linha é removida da cache). Níveis: L1 (dividida em instrução e dados), L2 (unificada), L3 (compartilhada entre núcleos). 4.3. Memória RAM (Random Access Memory) DRAM (Dynamic RAM): Usa capacitores; precisa ser constantemente refrescada (milhares de vezes por segundo). Mais lenta e mais barata que SRAM. É a memória principal. SRAM (Static RAM): Usa flip-flops; não precisa refresh. Muito mais rápida, mas mais cara e consome mais energia. Usada em caches. 4.4. Memória ROM (Read-Only Memory) Não volátil, usada para armazenar firmware (BIOS/UEFI). Variantes: PROM (Programmable ROM): Gravada uma única vez pelo usuário. EPROM (Erasable PROM): Apagável por luz ultravioleta. EEPROM (Electrically Erasable PROM): Apagável eletricamente (mais comum). Inclui a memória flash (usada em pendrives, SSDs, BIOS moderna). Dispositivos de Entrada e Saída (E/S) 5.1. Métodos de Comunicação E/S mapeada em memória (memory-mapped I/O): Dispositivos são acessados como se fossem posições de memória (endereços específicos). Instruções de load/store são usadas para ler/escrever em registradores de dispositivos. E/S com portas separadas (port-mapped I/O): Instruções especiais (ex.: e em x86) acessam espaços de endereçamento distintos. 5.2. Mecanismos de Transferência E/S programada (polling): O CPU fica verificando o status do dispositivo até que esteja pronto. Ineficiente. Interrupções: O dispositivo envia um sinal de interrupção ao CPU quando precisa de atenção. O CPU suspende o processo atual, executa a rotina de tratamento da interrupção (ISR) e retorna. Permite sobreposição de computação e E/S. DMA (Direct Memory Access): Um controlador DMA transfere blocos de dados diretamente entre dispositivo e memória sem intervenção do CPU. O CPU apenas configura a transferência (endereço, tamanho) e é interrompido quando termina. Barramentos (Buses) Barramento é um conjunto de linhas (fios) que interconectam os componentes, compartilhando sinais elétricos. Tipos: Barramento de dados: Transporta dados (bidirecional). Largura (32, 64 bits) influencia a taxa de transferência. Barramento de endereços: Transporta endereços de memória ou dispositivos (unidirecional, da CPU para a memória). Largura determina o máximo de memória endereçável ($2^{n}$). Barramento de controle: Transporta sinais de controle (leitura, escrita, interrupção, clock, reset). Arquiteturas de barramento comuns: Barramento único: Todos os componentes compartilham o mesmo barramento (simples, mas gargalo – Von Neumann original). Barramento separado (Harvard): Barramentos distintos para instruções e dados (melhor desempenho). Back-side bus (BSB): Conexão dedicada entre CPU e cache L2/L3 (em processadores mais antigos). Front-side bus (FSB): Barramento entre CPU e chipset (substituído por HyperTransport, QuickPath Interconnect, e finalmente por interconexões ponto a ponto como PCIe e Infinity Fabric). Exemplo Prático: Execução de uma Instrução Simples Considere a instrução em assembly x86-64: (adiciona o conteúdo da memória no endereço ao registrador RAX). Supondo uma CPU pipeline: IF: O PC aponta para o endereço da instrução . A UC busca o código da instrução (opcode + modRM) da cache L1 de instruções. ID: A UC decodifica: opcode = ADD, modRM indica que o segundo operando é um endereço baseado em RBP com deslocamento 8. A UC calcula o endereço efetivo: . EX: O endereço calculado é enviado à unidade de load/store (parte da ALU? Normalmente é uma unidade separada). A ALU também lê RAX. MEM: O valor da memória (no endereço calculado) é lido da cache L1 de dados. Se não estiver na cache, ocorre cache miss e a CPU busca da L2, L3 ou RAM. WB: O valor lido da memória é somado ao RAX (na ALU) e o resultado é escrito de volta em RAX. Arquiteturas Conjunto de Instruções (ISA) | Tipo | Características | Exemplos | |------|----------------|----------| | CISC (Complex Instruction Set Computer) | Instruções de tamanho variável, múltiplos modos de endereçamento, instruções que realizam várias operações (ex.: pode acessar memória). | x86, x86-64 (Intel, AMD) | | RISC (Reduced Instruction Set Computer) | Instruções de tamanho fixo (geralmente 32 bits), número reduzido, apenas operações registrador-registrador, acesso à memória apenas via LOAD/STORE. | ARM, MIPS, RISC-V, PowerPC | | VLIW | Instruções muito longas contendo múltiplas operações paralelas. | IA-64 (Itanium), alguns DSPs | Quadro Comparativo: CISC vs. RISC | Característica | CISC | RISC | |----------------|------|------| | Número de instruções | Grande (centenas) | Pequeno (dezenas) | | Tamanho da instrução | Variável (1-15 bytes em x86) | Fixo (32 bits) | | Modos de endereçamento | Muitos | Poucos (normalmente base+deslocamento) | | Acesso à memória | Instruções aritméticas podem acessar memória | Apenas LOAD/STORE | | Decodificação | Complexa (microcódigo) | Simples (hardwired) | | Pipelining | Mais difícil devido a dependências | Mais eficiente | | Exemplos | Intel x86, AMD64 | ARM, MIPS, RISC-V | Quadro Comparativo: SRAM vs. DRAM | Característica | SRAM | DRAM | |----------------|------|------| | Célula | 6 transistores (flip-flop) | 1 transistor + 1 capacitor | | Velocidade | Muito rápida (1-3 ns) | Lenta (50-100 ns) | | Densidade | Baixa (grande área por bit) | Alta (pequena área por bit) | | Consumo estático | Baixo (mas vaza corrente) | Alto (necessita refresh) | | Custo por bit | Caro | Barato | | Uso típico | Cache (L1, L2, L3) | Memória principal (RAM) | Considerações Finais A arquitetura de computadores é a base sobre a qual todo o software é construído. Para concursos e vestibulares, o candidato deve conhecer os componentes da CPU (UC, ALU, registradores), o ciclo de instrução, a hierarquia de memória (cache, RAM, ROM), os tipos de barramento e os métodos de E/S (interrupção, DMA). Entender as diferenças entre arquiteturas CISC e RISC e entre memórias SRAM e DRAM também é frequentemente cobrado. O estudo deve relacionar a teoria com exemplos práticos, como o funcionamento de um processador ao executar um programa simples.