Departamento de Informática e Estatística

Programas de Ensino
Visitante (Entrar)

Programa de Ensino 20231

Aprovado pelo Departamento em: 3-11-2022

  1. Identificação: Visualizar em PDF
    • Disciplina: INE5411 - Organização de Computadores I
    • Carga horária: 108 horas-aula      Teóricas: 92      Práticas: 16
    • Período: 1º semestre de 2023 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)
      • INE5406 - Sistemas Digitais
    • Engenharia Eletrônica (235)
      • EEL7030 - Microprocessadores
      • INE5406 - Sistemas Digitais
  4. Ementa:
    • Tendências tecnológicas na fabricação de CPUs e memórias. CPU: instruções e modos de endereçamento. Formatos de instruções e linguagem de montagem. Simulador e montador. Aritmética. Avaliação de desempenho. Datapath e unidade de controle. Alternativas de implementação (monociclo, multiciclo, pipeline, superescalar). Exceções e interrupções. Hazards estruturais, de dados e de controle. Hierarquia de memória e associatividade (cache e TLB). Dispositivos de entrada e saída: tipos, características e sua conexão à CPU e à memória. Comunicação com a CPU (polling, interrupção, DMA).
  5. Objetivo(s):
    • Geral: Definir a interface binária entre hardware e software e sua relação com os utilitários binários (montador e ligador) e o núcleo do sistema operacional, além de quantificar o impacto da organização do computador em seu desempenho.
    • Específicos:
      1. Apresentar os conceitos fundamentais de um computador em termos de seus componentes básicos (processador, sistema de memória e dispositivos de entrada e saída), abstraindo sua implementação física.
      2. Prover exemplos reais e contemporâneos desses componentes básicos.
      3. Estabelecer a noção de modelo de programação (programmer’s view) de um sistema computacional.
      4. Prover uma visão panorâmica da cadeia de ferramentas de programação de sistemas (compilador, montador, ligador, carregador, simulador do conjunto de instruções e depurador).
      5. Mostrar o papel da linguagem de montagem como formato intermediário para geração de código.
      6. Codificar pequenos programas na linguagem de montagem de um processador escolhido e executá-los em um simulador de seu conjunto de instruções.
  6. Conteúdo Programático:
    • ORGANIZAÇÃO DE UM COMPUTADOR [5 horas-aula]
      • Componentes básicos de um computador.
      • O papel da tecnologia de circuitos integrados no projeto de um computador.
      • Tendências tecnológicas na construção de computadores.
    • DESEMPENHO EM UM COMPUTADOR [7 horas-aula]
      • Medida e métrica de desempenho.
      • Programas para avaliação de desempenho (“benchmarks”).
      • Formas de comparação de desempenho.
      • Exemplo de desempenho de processadores contemporâneos.
    • A ARQUITETURA DO CONJUNTO DE INSTRUÇÕES DE UM PROCESSADOR [13 horas-aula]
      • Suporte a operandos em linguagens de programação
        • Operandos escalares (variáveis, constantes) e estruturas de dados.
        • Tipos de dados e suas conseqüências ("endian" e alinhamento).
      • Suporte a operações e construções em linguagens de programação
        • Instruções aritméticas, lógicas, de comparação e de deslocamento.
        • Instruções para tomadas de decisão em construções condicionais e laços.
        • Instruções para suporte a subrotinas (procedimentos, funções e métodos).
        • Instruções para suporte ao paradigma de orientação a objetos.
      • Modos de endereçamento
        • Direto em registrador.
        • Base.
        • Imediato.
        • Relativo ao PC.
        • Modos compostos ou derivados.
      • Representação de instruções em linguagem de máquina.
      • Pseudo-instruções.
      • Exemplos de instruções de arquiteturas contemporâneas.
      • Exemplos de código em diferentes níveis de representação.
    • EFEITOS DE REPRESENTAÇÃO NUMÉRICA EM ARITMÉTICA INTEIRA [3 horas-aula]
      • Representação de números sinalizados e não sinalizados.
      • Overflow e extensão de sinal.
    • O PROCESSADOR: UNIDADES DE PROCESSAMENTO E CONTROLE [13 horas-aula]
      • Estrutura e comportamento de unidades de processamento (UPs).
      • Organização de uma UP (mono-ciclo).
      • Comportamento da unidade de controle (UC) para uma dada UP.
      • Suporte ao tratamento de exceções na UP e na UC.
      • Exemplos de organização de processadores contemporâneos.
    • ACELERAÇÃO COM A TÉCNICA “PIPELINE” [11 horas-aula]
      • Hazards estruturais, de dados e de controle.
      • Impacto dos hazards no desempenho.
      • Organização de uma UP com pipeline e respectiva UC.
      • Paralelismo em nível de instruções (ILP).
      • Mecanismos básicos de exploração de ILP.
        • Despacho múltiplo: superescalar e "very long instruction word" (VLIW)
        • Execução especulativa.
        • Escalonamento estático e dinâmico.
      • Exemplo de organização de pipeline em processador contemporâneo.
    • O SUBSISTEMA DE MEMÓRIA [11 horas-aula]
      • Classificação de memórias.
      • A organização hierárquica de memória e seu gerenciamento.
      • Memórias cache.
        • Políticas de mapeamento, atualização e consistência.
        • Associatividade.
        • Organização de um controlador de cache (multi-ciclo).
        • Organização em múltiplos níveis.
        • Impacto no desempenho.
      • Memória virtual e suporte de hardware para tradução de endereços
        • "Translation Lookaside Buffer"(TLB).
      • Exemplos de subsistemas de memória contemporâneos.
    • O SUBSISTEMA DE ENTRADA E SAÍDA (E/S) [9 horas-aula]
      • Tipos e características de dispositivos de E/S.
      • Conexão de dispositivos de E/S com processador e memória.
      • Interfaceamento de dispositivos de E/S com a memória, o processador e o sistema operacional
        • "Polling".
        • Via interrupções.
        • Acesso direto à memória (DMA).
      • Exemplo de dispositivos de E/S contemporâneos.
    • PROGRAMAÇÃO DE SISTEMAS [9 horas-aula]
      • Representações de código:
        • Linguagem de alto nível
        • Linguagem de montagem
        • Linguagem de máquina
        • Anatomia de arquivos-objeto e arquivos executáveis.
      • A cadeia de ferramentas para geração e inspeção de código.
        • A estrutura de um compilador.
        • O mecanismo interno de um montador.
        • Ligador: mecanismos estático e dinâmico.
        • Funções de um carregador e de um simulador.
        • O mecanismo interno de um depurador.
      • Aplicações e casos de uso de linguagens de montagem.
    • MODELO DE PROGRAMAÇÃO DO SISTEMA (“programmer’s view”) [9 horas-aula]
      • Registradores e memória.
      • Conjunto de instruções e modos de endereçamento.
      • Uso de memória (segmento de dados, segmento de pilha, segmento de código).
      • E/S mapeada em memória.
    • SUBPROGRAMAÇÃO [9 horas-aula]
      • Convenção de chamada.
      • Salvamento e recuperação de contexto.
      • Layout da pilha e chamadas recursivas.
    • EXCEÇÕES E INTERRUPÇÕES [9 horas-aula]
      • Registradores de controle.
      • Tratamento de exceções e interrupções
  7. Bibliografia Básica:
    • David A. Patterson e John L. Hennessy, “Organização e Projeto de Computadores : a Interface Hardware/Sofware ”, tradução da 5a. edição, Elsevier, 2017 (ISBN 978853528793).
  8. Bibliografia Complementar:
    • David A. Patterson and John L. Hennessy, “Computer Organization and Design: The Hardware/Software Interface”, 5th edition, Elsevier (Morgan Kaufmann), USA, 2014 (ISBN 978-0-12-407726-3).
    • Dominic Sweetman, “See MIPS Run”, Second Edition, Morgan Kaufmann, Elsevier, 2005 (ISBN 978-0-12-088421-6).