Arquitetura
de Computadores I |
||||||
|
Ementa Revisão do modelo bloco de dados - bloco de controle. Dados e endereços. Instruções: tipos, formatos, modos de endereçamento. Acesso à memória: decodificação de endereços. Conjunto de instruções. Uma arquitetura típica. Linguagem de montagem. Princípios de programação em linguagem de montagem. Relações entre linguagens de montagem e linguagens de alto nível. Objetivos 1. Utilizar mecanismos de avaliação de desempenho de arquiteturas de computadores. 2. Comparar arquiteturas de computadores sob o ponto de vista do desempenho, mediante emprego de padrões quantitativos de avaliação. 3. Dominar as técnicas básicas de projeto, controle e implementação de “pipelines” em arquiteturas de computadores modernas. 4. Dominar as principais técnicas vinculadas à execução de operações aritméticas em hardware, tanto para números naturais e inteiros quanto para números racionais. 5. Utilizar e ter noções de como implementar programas básicos empregados na tradução e execução de programas escritos em linguagem de montagem, tais como montadores, ligadores e carregadores. 6. Reconhecer as relações fundamentais existentes entre o hardware e o software em arquiteturas de computadores modernas. Programa da disciplina UNIDADE 1: Pipelines – Estrutura Geral, Controle e Construção 1.1 Revisão de conceitos básicos de “pipeline” 1.1.1 Vantagens de “pipelining” – “throughput” 1.1.2 Inconvenientes de “pipelining” – “hazards” 1.1.3 Solução de problemas em “pipelines” 1.1.3.1 Bolhas
1.1.4 Modelo bloco de dados – bloco de controle e “pipelines” 1.2 Construindo um bloco de dados para “pipelining” 1.2.1 Estágios 1.2.2 Representação gráfica 1.3 Controle de “pipelines” 1.3.1 Instruções: tipos, formatos e modos de endereçamento 1.3.2 Acesso a memória em arquiteturas “pipeline” 1.3.3 Efeitos de “pipelining” na linguagem de montagem 1.3.4 Efeitos de “pipelining” em linguagens de alto nível 1.4 “Hazards” de dados e “forwarding” 1.5 “Hazards” de dados e bolhas 1.6 “Hazards” devido a saltos 1.7 Exceções em “pipelines” UNIDADE 2: Avaliação de Desempenho de Arquiteturas de Computadores 2.1 Introdução 2.1.1 Definição de desempenho 2.1.2 Tempo de resposta e “throughput” 2.1.3 Desempenho relativo 2.2 Como medir desempenho 2.3 Relação entre métricas de desempenho 2.4 “Benchmarks”: programas para medir desempenho UNIDADE 3: Aritmética Computacional Avançada 3.1 Aritmética básica para implementação em sistemas digitais 3.1.1 Aritmética de naturais – soma e multiplicação 3.1.2 Aritmética de inteiros – soma, subtração, multiplicação e divisão 3.2 Aritmética de ponto flutuante: o padrão IEEE-754 3.2.1 Introdução ao padrão IEEE-754 3.2.2 Operações aritméticas no padrão IEEE-754 3.2.3 Arredondamento e valores não-numéricos UNIDADE 4: Sistemas de Apoio à Programação e Execução de Programas 4.1 Visão geral de sistemas de apoio à programação e execução de programas 4.1.1 Código objeto 4.1.2 Código em linguagem de montagem 4.1.3 Desvantagens de linguagens de montagem 4.2 Montadores 4.2.1 Rótulos 4.2.2 Tipos de montadores 4.2.3 Estruturas de dados básicas: tabelas de instruções e tabelas de símbolos 4.2.4 Facilidades adicionais em linguagens de montagem – diretivas e pseudo-instruções 4.3 Ligadores 4.4 Carregadores 4.5 Outros sistemas de apoio: processadores de macro e interpretadores UNIDADE 5: Estudo de caso de arquitetura da atualidade 5.1 Conjunto de registradores, conjunto de instruções e modos de endereçamento 5.2 Implementação de estruturas de controle de fluxo e laços 5.3 Avaliação de expressões complexas, lógicas e aritméticas 5.4 Formas de acesso a estruturas de dados complexas (vetores, matrizes, registros e ponteiros) 5.5 Linguagem de montagem versus linguagem de alto nível
|