Programa de Ensino 20182
Aprovado pelo Departamento em: 10-5-2018
- Identificação:
- 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
- Curso(s):
- Ciências da Computação (208)
- Engenharia Eletrônica (235)
- Requisito(s):
- Ciências da Computação (208)
- INE5411 - Organização de Computadores I
- Engenharia Eletrônica (235)
- INE5411 - Organização de Computadores I
- 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.
- 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:
- 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.
- 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.
- Apresentar técnicas de exploração de paralelismo entre instruções (instruction-level parallelism).
- Apresentar técnicas de suporte à exploração de paralelismo entre threads (thread-level parallelism).
- 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
- 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)
- 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)