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 (ci210); 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:  É imprescindível que
    o livro texto seja lido e compreendido.
   
        
   As 
      transparências/slides podem auxiliar com as anotações tomadas em aula.
Avaliação: listas, duas provas e um trabalho,
 nota = L*0.1 + P1*0,3 + P2*0,3 + T*0,3.
 Não há segunda chamada, exceto nos casos previstos na Resolução 37-97.
 A pior nota dentre P1 e P2 poderá ser substituída pela nota de uma
prova sobre toda a matéria no dia 23jun.
Programa: turma A, aulas as 13:30 nas 3as,5as na sala ct06
data livro assunto (rev 1.0-07fev2016) -------------------------------------------------------------------------. 01mar 3.1-4 apresentação, aritmética em ponto fixo, 4 operações 03 3.5 aritmética em ponto flutuante 08 1.1-8 conj de instruções do MIPS 1a lista 10 2.1-10 conj de instr do MIPS: acesso a dados, funções -- hex4 atividade extra-classe - programação em assembly (i) e (ii) 15 2.1-10 conj de instr do MIPS: exemplos 17 4.1-4 circuito de dados, revisão ciclo longo xx ---- atividade extra-classe - compilação com mips-gcc e binutils 22 4.5-6 segmentação do circuito de dados 29 4.7 segmentação, riscos de dados, adiantamento 31 4.8-9 segmentação, riscos de controle 2a lista 05abr 4.8-9 laboratório - segmentação 07 4.10-11 exceções, paralelismo no nível de instrução, proc. superescalares 12 5.1-2 cálculo de endereços, memória, memória cache 3a lista 14 5.2-3 cache: organização, projeto 19 5.2-3 cache: projeto, escritas, desempenho (cont.) 26 1-5 revisão, exercícios 28 1-5.3 primeira prova 03mai 5.4-5 resolução da prova; memória virtual 05 5.4-5 memória virtual, TLB 10 5.4-5 mais memória virtual 4a lista 12 4.8-9 laboratório - TLB (lab.4) 17 6.1-5 E/S, periféricos especificação do trabalho 19 6.6-9 E/S, interfaces CPU-SO, desempenho 5a lista 24 6.6-9 barramentos, DMA, vazão e latência 31 7.1-2 introdução à programação paralela 02jun 7.1-2 multiprocessadores com memória compartilhada 07 7.1-2 mais multiprocessadores com memória compartilhada 09 7.1-2 exercícios 14 tudo balancete semestral, ou até onde chegamos 16 1-7 segunda prova 21 ---- demonstração do trabalho entrega do trabalho 23 ---- demonstração do trabalho prova substitutiva 12jul 1-7 final -------------------------------------------------------------------------
Especificação do Trabalho entrega em 21jun até
  as 13:00
Listas de Exercícios:
 ponto flutuante,
 assembly e aritmética,
 segmentação,
 caches,
 mem virtual,
 TLB e TP,
 E/S.
Provas de períodos anteriores:
 16-1,
 14-2,
 13-2,
 12-2,
 11-2,
 10-2,
 08-2,
 07-2,
        07-1,
 06-2,
        06-1, 
 05-2.
Bibliografia:
Ferramentas, material auxiliar e documentação: