Arquitetura de Computadores é a ciência (há quem diga "arte") de
selecionar e interconectar componentes de hardware para produzir
computadores que atendam a requisitos funcionais, de desempenho e de custo.
Nesta disciplina estudaremos a estrutura de um computador programável
moderno, investigando as leis básicas da avaliação de desempenho, usando
como exemplo o projeto dos circuitos de dados e de controle de um
processador similar ao MIPS, com execução paralela de instruções por
segmentação e super-escalaridade, bem como o projeto de sistemas eficientes
de memória e de armazenamento. O conteúdo desta disciplina pressupõe
familiaridade com: (i) análise e projeto de circuitos digitais
(ci210); (ii) programação em linguagem de máquina (ci064); e
(iii) programação em C e estruturas de dados (ci056).
Ementa: Componentes do fluxo de dados e sua organização. Unidade lógica e aritmética. Unidade de controle. Memória. Vias de acesso. Elementos de um conjunto de instruções. Arquitetura Von Newman. Arquitetura de entrada e saída. Otimização de arquitetura.
Objetivo: Fornecer ao aluno conhecimentos básicos sobre a organização, a arquitetura e microarquitetura (técnicas básicas de projeto). Capacitá-lo a avaliar e comparar diferentes arquiteturas. Capacitá-lo a apontar e diagnosticar problemas relacionados ao desempenho de sistemas ou sub-sistemas, bem como a prescrever soluções para optimizar o uso e desempenho de sistemas computacionais.
Pré-requisito: CI210
Importante: Esta disciplina têm uma das maiores taxas de
reprovação do Bacharelado em Ciência da Computação.
É imprescindível que
o livro texto seja lido e compreendido. As transparências não
substituem o livro!
Avaliação da disciplina efetuada na última semana de aulas.
Avaliação:3 provas cumulativas e com pesos desiguais.
média = P1*0,3 + P2*0,3 + P3*0,4
Não há segunda chamada, exceto nos casos previstos na Resolução 37-97.
Programa: aulas nas 2as e 6as as 13:30
data livro assunto
---------------------------------------------------------------------------
20mai 3.1-3.2 programa, motivação, linguagem de montagem MIPS
24 3.3-3.8 linguagem de montagem MIPS
27 3.6-3.8 linguagem de montagem MIPS - suporte a funções
31 3.9-3.14 linguagem de montagem MIPS - suporte a funções
03jun 4.1-4.5 Unidade de Lógica e Aritmética (ULA)
07 4.6-4.7 aritmética de ponto fixo (multiplicação & divisão)
10 4.8 aritmética de ponto flutuante
14 5.1-5.4 circuito de dados, componentes
17 5.5-5.6 circuito de dados, controle & temporização
21 5.5-5.6 circuito de dados, multiciclo, busca antecipada
24 2.1-2.6 avaliação de desempenho
28 exercícios
01jul primeira prova [Caps 2-5]
05 6.1-6.3 circuito de dados segmentado
08 6.4-6.5 dependências de dados, melhorias na segmentação
12 6.6 dependências de controle, melhorias na segmentação
22 6.7-6.8 exeções, processadores superescalares, VLIW
26 exercícios
29 sistemas de memória - organização, endereçamento
02ago 7.1,7.2 memória cache
05 7.1,7.2 memória cache
09 7.3 caches: medidas de desempenho
12 exercícios
16 segunda prova [Caps 2-6,7.{1,2,3}]
19 7.4 memória virtual, endereçamento
23 7.4 memória virtual, TLB
26 7.5 memória virtual, associatividade, escrita
30 7.6 memória virtual - exemplos, exercícios
02set sistemas de memória, barramentos, transações
06 8.1-8.3 dispositivos de entrada e saída
09 8.4-8.5 barramentos, vazão e latência
13 8.6-8.7 projeto de sistemas de E/S, exemplos
16 exercícios
20 terceira prova [Caps 2-8]
30set final
---------------------------------------------------------------------------
Listas de Exercícios:
ponto flutuante,
assembly e aritmética,
CPUs,
segmentação,
caches,
mem virtual,
TLB e TP,
E/S.
Provas de períodos anteriores:
00-1
Bibliografia:
Material auxiliar e documentação: