Arquitetura de Computadores: Pipeline, Memória, Cache e E/S
Pipeline e Conflitos
Fases: IF (busca), ID (decodificação e leitura de registradores), EX (execução e cálculo), MEM (acesso à memória), WB (escrita em registradores).
ISA MIPS: todas as instruções possuem 32 bits e poucas instruções.
Conflitos
Estruturais → replicação de recursos.
Dados → HW: retardo (forwarding); SW: inserção de nops ou rearranjo de instruções.
Controle → HW: congelamento do pipeline (freeze), especulação e aceleração do desvio; SW: rearranjo de instruções e uso do efeito de atraso do desvio (delay slot).
SuperPipe → estágios menores e clock mais alto.
SuperEscalar → paralelismo real, com replicação de unidades (mais ALUs, banco de registradores com mais portas de leitura e escrita).
Desempenho e Hierarquia de Memória
Tempo de CPU = (ciclos de CPU + ciclos de memória) × Período
Ciclos de memória = ciclos de leitura + ciclos de escrita.
Ciclos de leitura = nº de leituras × miss rate × penalidade de miss.
Tempo de acesso à memória = hit time + miss rate × miss penalty
- Reduzir hit time: cache menor e menor associatividade.
- Reduzir miss rate: maior tamanho de bloco, maior associatividade e política de substituição.
- Reduzir miss penalty: early start, critical word first e cache multinível.
Memória Virtual
Segmentação: esquema de blocos de tamanho variável, para que programas e dados possam ser divididos em espaços de endereçamento lógico independentes, auxiliando também na proteção e no compartilhamento de memória.
Área de swap: espaço no disco reservado para as páginas de um processo, onde são armazenadas as páginas que forem substituídas.
MMU: mapeia endereços virtuais em físicos, avisa sobre page faults, protege processos e trata falhas.
TLB: cache associativo dentro da MMU.
Kernel mode: permite indicar se o processo pertence ao S.O. ou ao usuário, por meio de um bit específico.
Exemplo de Paginação
Endereço virtual = 35 bits | Página = 8 KB | Endereço físico = 32 bits
Na mesma figura, layout da tabela de páginas:
13 bits de offset, pois 213 = 8 KB.
Quantidade de entradas = 227 | Tamanho máximo = 232 = 4 GB | Espaço de endereçamento virtual = 235 = 32 GB
Custo em bits de uma TLB associativa de 2 vias com 256 entradas:
128 páginas, cada uma com 2 blocos de dados. Cada bloco possui 1 bit de presença, 3 de proteção, 1 de dirty, 1 de tag (página virtual) e a página física. Assim: 1 + 3 + 1 + 22 + 19 = 46 bits por bloco → 92 bits por página → 11.776 bits no total.
Disco e Multiprocessamento
Latência de disco = Seek time (0,50 / velocidade de rotação) + Rotation time + Transfer time + Overhead
MultiCore: SMP ou passagem de mensagens (MSGPASS).
- Core-core: memória compartilhada ou envio de dados.
- Processo-processo: variáveis compartilhadas com send e receive.
- MIPS: LoadLink e StoreConditional; loads em locais especiais.
MultiThread: Fine-grain (troca sempre), Coarse-grain e SMT.
GPU: multithread, com memória mais larga.
Tamanho de Cache: Mapeamento Direto e Associativo de Grau 4
Exemplo: memória de 232 bytes, cache com 2K slots e blocos de 32 bytes.
Mapeamento direto
- Cache com 211 slots, índice n = 11.
- Bloco de 32 B = 25 B, onde 25 = 2m+2, logo m = 3.
- O bloco possui 2m+5 bits = 28 = 256 bits.
- Tamanho da tag = 32 − (n + m + 2) = 16 bits, e bit de validade = 1.
Total de bits (mapeamento direto) = 2n × (tamanho do bloco + tamanho da tag + tamanho do bit de validade)
No exemplo: 211 × (256 + 16 + 1) = 211 × 273 = 559.104 bits = 69.888 B.
Associativo de grau 4
- 2K slots / 4 = 512 = 29, logo n = 9.
- Cada slot possui 4 blocos de 32 bytes → tamanho do bloco = 256 bits.
- Bits da tag = 27 − 9 = 18 bits (27 = índice + tag; 9 = bits usados para indexar a cache); validade = 1 bit.
Total de bits (associativo grau 4) = 2n × 4 × (bits do bloco + bits da tag + bit de validade) = 29 × 4 × (256 + 18 + 1) = 211 × 275 = 563.200 bits = 70.400 B.
Barramentos e Entrada/Saída
Barramentos: canal de comunicação compartilhado, geralmente com interface padrão, que suporta vários dispositivos. É síncrono, possuindo clock.
Redes de E/S: conexões seriais ponto a ponto de alta velocidade (comuns em sistemas embarcados).
Tipos de barramento:
- Processador-memória: curto e rápido, para transferência de blocos de cache.
- E/S: longo e lento, com vários dispositivos, conectado ao barramento processador-memória por meio de um backplane.
- Backplane: intermediário entre os dois anteriores (ex.: SATA).
Controle: único (apenas o processador controla, mas perde desempenho) ou múltiplo (processador e dispositivos, exigindo coordenação).
Endereçamento de E/S: mapeado em memória, ou por instruções específicas de E/S (a ISA do processador possui IN e OUT específicos).
Polling: o processador verifica periodicamente o dispositivo. Interrupção: o dispositivo sinaliza ao processador quando precisa de atenção.
DMA: retira a carga do processador na transferência entre dispositivos de E/S e memória. Intermedia essa transferência, sendo ideal para grandes volumes de dados.