Programa de Ensino 20231
Aprovado pelo Departamento em: 3-11-2022
- Identificação:
- 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
- Curso(s):
- Ciências da Computação (208)
- Engenharia Eletrônica (235)
- Requisito(s):
- Ciências da Computação (208)
- INE5406 - Sistemas Digitais
- Engenharia Eletrônica (235)
- EEL7030 - Microprocessadores
- INE5406 - Sistemas Digitais
- 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).
- 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:
- 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.
- Prover exemplos reais e contemporâneos desses componentes básicos.
- Estabelecer a noção de modelo de programação (programmer’s view) de um sistema computacional.
- 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).
- Mostrar o papel da linguagem de montagem como formato intermediário para geração de código.
- Codificar pequenos programas na linguagem de montagem de um processador escolhido e executá-los em um simulador de seu conjunto de instruções.
- 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
- 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).
- 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).