Departamento de Informática e Estatística

Programas de Ensino
Visitante (Entrar)

Programa de Ensino 20182

Aprovado pelo Departamento em: 10-5-2018

  1. Identificação: Visualizar em PDF
    • Disciplina: INE5436 - Arquitetura de Computadores I
    • Carga horária: 72 horas-aula      Teóricas: 72      Práticas: 0
    • Período: Início da oferta da disciplina até a presente data
  2. Curso(s):
    • Ciências da Computação (208)
    • Engenharia Eletrônica (235)
  3. Requisito(s):
    • Ciências da Computação (208)
      • INE5411 - Organização de Computadores I
    • Engenharia Eletrônica (235)
      • INE5411 - Organização de Computadores I
  4. Ementa:
    • Fundamentos do projeto de computadores (mercados, custo, preço e desempenho). Arquiteturas de conjuntos de instruções (máquinas baseadas em acumulador, pilha e registradores, máquinas load-store). Arquiteturas RISC, CISC e DSP. Pipelining e emissão múltipla (máquinas superescalares e VLIW). Exploração de paralelismo entre instruções (escalonamento estático e dinâmico, previsão estática e dinâmica de desvios, execução especulativa, software pipelining, trace scheduling). Projeto de hierarquia de memória.
  5. Objetivo(s):
    • Geral: Apresentar os princípios quantitativos do projeto de computadores e aplicá-los especialmente ao projeto de processadores e ao projeto da hierarquia e memória.
    • Específicos:
      1. Revisar os princípios de projeto de conjuntos de instruções, sua classificação, sua codificação e o papel do compilador na seleção e escalonamento de instruções.
      2. Revisar os principais conceitos de hierarquia de memória, apresentar as tecnologias utilizadas em sua implementação e as principais técnicas de otimização de caches.
      3. Apresentar técnicas de exploração de paralelismo entre instruções (instruction-level parallelism).
      4. Apresentar técnicas de suporte à exploração de paralelismo entre threads (thread-level parallelism).
  6. Conteúdo Programático:
    • PRINCÍPIOS DE CONJUNTOS DE INSTRUÇÕES [12 horas-aula]
      • Classificação de conjuntos de instruções
      • Endereçamento de memória, tipo e tamanho de operandos
      • Tipos de instruções e sua codificação
      • O papel do compilador
    • PROJETO DE HIERARQUIA DE MEMÓRIA [12 horas-aula]
      • Conceitos básicos
      • Tecnologias de implementação de memória
      • Técnicas de otimização de caches
    • PARALELISMO ENTRE INSTRUÇÕES [24 horas-aula]
      • Conceitos básicos e desafios
      • Técnicas de compilação básicas para expor paralelismo
      • Previsão de desvios para reduzir o custo de hazards de controle
      • Escalonamento dinâmico para contornar hazards de dados
      • Especulação baseada em hardware
      • Exploração de paralelismo com emissão múltipla e escalonamento estático
      • Exploração de paralelismo com emissão múltipla, escalonamento dinâmico e especulação
      • Técnicas avançadas para entrega de instruções e especulação
    • PARALELISMO ENTRE THREADS [24 horas-aula]
      • Memória compartilhada centralizada
      • Memória compartilhada distribuída
      • Protocolos de coerência de cache
      • Mecanismos básicos de sincronização
      • Modelos de consistência de memória
  7. Bibliografia Básica:
    • John L. Hennessy and David A. Patterson, “Computer Architeture: A Quantitative Approach”, sixth edition, Morgan Kaufmann Publishers, 2018. (ISBN: 978-0-12-811905-1)
  8. Bibliografia Complementar:
    • David A. Patterson and John L. Hennessy, “Computer Organization and Design: The Hardware/Software Interface”, fifth edition, Morgan Kaufmann Publishers, 2014. (ISBN: 978-0-12-407726-3)