UFABC - Arquitetura de Computadores (MCTA004-17/CCM-201)
Primeiro Quadrimestre de 2021

Índice

Permalink

Turmas:
Graduação: TDPMCTA004-17SA, TDAMCTA004-17SA, TNAMCTA004-17SA
Pós-Graduação: TCCM20120211

Professor: Emilio Francesquini
E-mail: e.francesquini@ufabc.edu.br


div.png

1 Avisos


div.png

2 Horários de atendimento

Perguntas relativas ao assunto da disciplina devem ser enviadas via Discord, para que a resposta seja aproveitada pelos demais. Privilegie comunicações por e-mail caso tenha algum assunto que não é de interesse dos demais como, por exemplo, sua avaliação. Ainda assim você pode escolher mandar uma mensagem direta via Discord caso prefira.

2.1 Via Discord

Horário Seg Ter Qua Qui Sex
08:00 - 09:00     Online (via Discord)    
09:00 - 10:00     Online (via Discord)    
10:00 - 11:00 Online (via Discord)        
11:00 - 12:00 Online (via Discord)        
-----          
14:00 - 15:00   Online (via Discord)      
15:00 - 16:00   Online (via Discord)      
16:00 - 17:00     Online (via Discord)    
17:00 - 18:00     Online (via Discord)    
18:00 - 19:00          
19:00 - 20:00     Online (via Discord)    
20:00 - 21:00     Online (via Discord)    
21:00 - 22:00 Online (via Discord)        
22:00 - 23:00 Online (via Discord)        

Eventuais dúvidas e questionamentos poderão ser enviados em outros horários. Contudo, fora dos horários acima, o professor pode não atendê-los tão prontamente devido as suas outras atividades.

2.2 Via email


div.png

3 Sobre a Disciplina

3.1 Graduação

MCTA004-17 - Arquitetura de Computadores

  • TPI: 4-0-4
  • Recomendação: Circuitos Digitais, Sistemas Digitais

Objetivos

  1. Apresentar os conceitos fundamentais de Arquitetura e Organização de Computadores
  2. Relacionar a aplicação dos conceitos fundamentais nos projetos modernos de Sistemas Computacionais
  3. Apresentar e discutir o papel da tecnologia na implementação das Arquiteturas de Computadores e de Sistemas Computacionais
  4. Apresentar as estratégias e técnicas de melhoria de desempenho e confiabilidade dos Sistemas Computacionais

Conteúdo Programático

História e Evolução dos Computadores e Sistemas; Estrutura de Computadores Digitais; Lógica Digital Binária; Processamento; Instruções e linguagem de máquina; Microprocessadores modernos: pipeline, super-escalar, RISC; Memórias cache e gerenciamento de memórias; Arquitetura de computadores pessoais; Arquitetura de Computadores Paralelos; Sistemas Computacionais: desempenho e confiabilidade.

3.2 Pós-Graduação

CCM-201

Ementa

Conceitos básicos; Barramentos; Entrada e Saída; Microarquitetura; Sistemas de Memória: primária, secundária, cache, virtual; arquiteturas RISC e CISC; Pipelines e arquiteturas superescalares; instruções: formatos, tipos e conjuntos e endereçamento; arquiteturas multicore;


div.png

4 Sobre a modalidade online

Diante da pandemia de COVID-19, que impõe a necessidade de adoção de medidas por parte do Poder Público (e da universidade) para a contenção da disseminação da doença, e considerando que o prazo de suspensão das atividades acadêmicas presenciais tende a ser longo, neste quadrimestre a disciplina será ministrada de maneira totalmente online. As regras que regulam esta modalidade são definidas pela Resolução ConsEPE Nº 240/2020.

Todas as aulas, com e sem participação dos alunos, serão gravadas e disponibilizadas online segundo a Licença Creative Commons Atribuição-NãoComercial 4.0 Internacional (CC-BY-NC). Todos os participantes do curso dão sua tácita e irrevogável autorizaçao para que suas imagens e falas sejam transmitidas, gravadas e editadas segundo a licença acima pelo docente responsável, sem nenhuma cobrança, para uso em distintos canais de comunicação e peças publicitárias sem fins comerciais.

4.1 Dinâmica de ensino

Serão disponibilizadas videoaulas com explicação do conteúdo teórico. Como material de apoio os alunos terão acesso aos códigos desenvolvidos durante as aulas, além de poderem contar com o uso do Discord para tirar dúvidas e discutir assuntos pertinentes à disciplina.

Após cada tópico estudado o professor disponibilizará listas de exercícios sobre o conteúdo apresentado. As entregas destas listas são opcionais. As aulas não serão dadas em tempo real devido aos inúmeros possíveis problemas técnicos, já que são mais de uma centena de alunos matriculados na disciplina atualmente. Nos dias e horários em que haveria aula e atendimento, estarei online na ferramenta Discord (que além de chat, faz captura de voz e tela) para tirar dúvidas sobre o conteúdo previsto para aquela data.

A avaliação será feita através de um projeto de programação a ser entregue em três fases. O enunciado e detalhes do projeto de programação serão divulgados na página da disciplina em breve.


div.png

5 Datas Importantes

O projeto de programação deverá ser entregue nas seguintes datas:

  • Fase 1: 14/03
  • Fase 2: 04/04 \(\to\) 11/04
  • Fase 3: 25/04 \(\to\) +02/05 \(\to\) +05/05 23h59 - HARD DEADLINE!
    • Qualquer atraso implica nota zero. Sem exceções.
      • Ou seja a tabela de atrasos abaixo apenas se aplica para as fases anteriores!
    • Enunciado: PDF
    • Entradas de teste (contém também os fontes usados para gerá-las): entradas.zip
    • Diretório com todas as "coisas": link
    • Implementação de referência:
      • Linux (x86-64): minips atualizado em 23/04
      • Windows (x86-64): minips.exe atualizado em 23/04

As entregas deverão ser feitas pelo GitHub Classroom até às 23:59 do dia da entrega. Os links para entrega serão divulgados na página da disciplina (esta página) oportunamente.

Projetos entregues com atraso sofrerão descontos seguindo a seguinte tabela:

Dias em atraso Nota máxima
1 dia 7
2 dias 6
3 dias 5
>3 dias 0

Note que as fases dos projetos são incrementais, ou seja, mesmo que você perca a data de uma das entregas invariavelmente você precisará fazê-lo para conseguir entregar a etapa seguinte.

Enunciados dos EPs serão disponibilizados no site da disciplina. As datas da recuperação serão divulgadas assim que definida conforme o Anexo III da Resolução ConsEPE Nº 239/2020.


div.png

6 Listas de Exercícios

Exercícios selecionados do [PH]:

  • 5a edição
    • Capítulo 1: 1.1, 1.2, 1.3, 1.4, 1.5, 1.10, 1.11, 1.12, 1.14, 1.15
    • Capítulo 2: 2.1-2.6, 2.8, 2.12, 2.13, 2.14, 2.15, 2.16, 2.17,2.18, 2.23, 2.25, 2.28, 2.31
    • Capítulo 3: 3.2, 3.3, 3.5, 3.6, 3.27, 3.29
    • Capítulo 4: 4.1 - 4.9, 4.10, 4.11, 4.13, 4.14, 4,15, 4,18, 4.19
    • Capítulo 5: 1, 2, 3, 4, 6, 7, 11, 12, 13, 15, 19
  • 4a edição
    • Capítulo 1: 1.1, 1.2, 1.3, 1.5, 1.10.1-1.10.4, 1.12, 1.14, 1.15,1.16
    • Capítulo 2: 21.1-2.6, 2.8, 2.12.1-2.12.3, 2.13, 2.14.1, 2.14.4, 2.15.2,02.15.4, 2.16.1, 2.17.1-2.17.3,2.18, 2.19.1, 2.20.1, 2.21.1, 2.25.1-2.25.3, 2.28, 2.31
    • Capítulo 3: 3.2, 3.3, 3.5.1, 3.6.1, 3.10.1-3.10.3, 3.11.2, 3.14
    • Capítulo 4: 4.1, 4.2, 4.6, 4.8, 4.12, 4.13, 4.14, 4.15, 4.19, 4.21, 4.22, 4.24, 4.28, 4.35
    • Capítulo 5: 5.1, 5.3, 5.4, 5.5, 5.6, 5.8, 5.10, 5.12,
    • Capítulo 6: 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 6.7, 6.9, 6.10, 6.11, 6.12, 6.13, 6.14,
    • Capítulo 7: 7.1, 7.2, 7.3, 7.5, 7.7, 7.8, 7.9, 710, 7.12, 7.14, 7.20

6.1 Exercícios para avaliar se você obteve a mínima compreensão do assunto


div.png

7 Aulas

As videoaulas serão disponibilizadas no Youtube semanalmente.

O cronograma das aulas seguirá a seguinte programação:

Sem. Aula Assunto Referências Material
1 Apresentação da Disciplina; - -
  2 Introdução à Arq. Comp. Parte 1; [PH] Cp. 1;
[WS] Cp. 1,2
PDF;
1.1 Introdução;
1.2 Debaixo do capô;
3 Introdução à Arq. Comp. Parte 2; [PH] Cp. 1;
[WS] Cp. 1,2
PDF;
1.3 A Fabricação de Processadores;
1.4 Avaliação de Desempenho;
1.5 Power Wall, Falácias e Tropeços;
Extra 1: Como microchips são feitos;
Extra 2: Guerra de nanômetros;
  4 Instruções - Parte 1; [PH] Cp. 2;
[WS] Cp. 10,11
PDF;
2.1 A Linguagem do Computador;
2.2 Representando Inteiros com e sem Sinal;
2.3 Representando Instruções no Computador;
2.4 Operações Lógicas;
Extra 1: Parte 1 do video da aula do Prof. Rodolfo Azevedo da Unicamp;
5 Instruções - Parte 2; [PH] Cp. 2;
[WS] Cp. 10,11
PDF;
2.5 Operações Condicionais;
2.6 Procedimentos e Funções;
2.7 Endereçamento no MIPS;
Extra 1: Parte 1 do video da aula do Prof. Rodolfo Azevedo da Unicamp;
Extra 2: Parte 2 do vídeo da aula do Prof. Rodolfo Azevedo da Unicamp;
  6 Instruções - Parte 3; [PH] Cp. 2;
[WS] Cp. 10,11
PDF;
2.8 Decodificando a Linguagem de Máquina;
Extras 1: Parte 2 do vídeo da aula do Prof. Rodolfo Azevedo da Unicamp;
7 Instruções - Parte 4; [PH] Cp. 2;
[WS] Cp. 10,11
PDF;
2.9 Traduzindo e Iniciando um programa;
2.10 MIPS ASM - Exemplo Completo Bubble Sort;
2.11 Arrays vs Ponteiros;
2.12 ISAs MIPS x ARM x x86
Extra 1: Parte 2 do vídeo da aula do Prof. Rodolfo Azevedo da Unicamp;
  8 Dizia eu que a aritmética…; [PH] Cp. 3;
[WS] Cp. 9
PDF;
3.1 Dizia eu que a aritmética…;
3.2 Multiplicação e Divisão de Inteiros;
3.3 Números com Ponto Flutuante;
3.4 Adição e Multiplicação de Pontos Flutuantes;
Extra 1: Vídeo sobre FP do Prof. Rodolfo Azevedo da Unicamp;
9 Dizia eu que a aritmética…; [PH] Cp. 3;
[WS] Cp. 9
PDF;
3.5 Instruções de Ponto Flutuante no MIPS;
3.6 Double precision, General Matrix Multiply (DGEMM) no MIPS;
3.7 FPs no x86, Falácias e Tropeços;
Extra 1: Vídeo sobre FP do Prof. Rodolfo Azevedo da Unicamp;
  10 O Processador - Introdução; [PH] Cp. 4; PDF;
4.1 Basicão de Lógica Combinacional;
4.2 Uma ULA para o MIPS chamar de sua;
4.3 Uma Visão Geral do Processador;
4.4 Datapath Monociclo;
4.5 Encaixando as Instruções no Datapath;
Extra 1: Vídeo sobre Datapath Monociclo do Prof. Rodolfo Azevedo da Unicamp;
11 Pipelining; Pipeline hazards; [PH] Cp. 4;
[WS] Cp. 12,13,14;
[HP] Ap. C
PDF;
4.6 Pipelining;
4.7 Pipeline Hazards;
Extra 1: Vídeo do Prof. Rodolfo Azevedo da Unicamp;
  12 Pipeline do MIPS; Paralelismo de Instruções; [PH] Cp. 4;
[WS] Cp. 12,13,14;
[HP] Ap. C
PDF;
4.8 Pipeline no MIPS;
4.9 Paralelismo no nível de instruções (ILP);
Extra 1: Investigando ILP - Sonic the Hedgehog e o ILP via multiple issue com escalonamento estático no Sega Saturn1;
Extra 2: Documentação do Sega Saturn
13 Hierarquia de memória; Tecnologias de memória; [PH] Cp. 5;
[WS] Cp. 5,6;
[HP] Cp. 2;
PDF;
5.1 Hierarquia de memória;
PDF;
5.2 Memória Universal;
  14 Memórias Cache; Caches com Mapeamento Direto; [PH] Cp. 5;
[WS] Cp. 4;
[HP] Cp. 2, Ap. B
PDF;
5.3 Memórias Cache, Caches com Mapeamento Direto;
15 Organização e Políticas de Caches; [PH] Cp. 5;
[WS] Cp. 4;
[HP] Cp. 3, Ap. B
PDF;
5.4 Memória Cache Associativa por Conjuntos;
5.5 Memórias Cache: Políticas de Substituição de Linhas;
5.6 Memórias Cache: Interações entre Hardware e Software;
  16 Memória Virtual e a TLB; [PH] Cp. 5;
[WS] Cp. 8;
[HP] Cp. Ap. B
PDF;
5.7 Memória Virtual - Uma Breve Revisão;
5.8 Memória Virtual: Tradução de Endereços;
5.9 Memória Virtual: Translation Lookaside Buffer (TLB);
5.10 Hierarquia de Memória: Conclusão e Resumo;
17 Coerência de cache; [PH] Cp. 5;
[WS] Cp. 17;
[HP] Cp.5
PDF;
5.11 Coerência de Cache;
5.12 Protocolos de Coerência de Cache;
5.13 Comentários finais sobre a Hierarquia de Memória;
  18 Tolerância a Falhas; RAID; [PH] Cp. 5,
Ap. 5.11; [WS] Cp. 5,6;
[HP] Ap. B, D
PDF;
5.14 Disponibilidade, Dependabilidade, Confiabilidade;
5.15 Códigos de Correção de Erros;
5.16 Redundant Arrays of Inexpensive Disks (RAID);
10ª 19 Processadores paralelos; [PH] Cp. 6;
[WS] Cp. 17,18;
[HP] Cp. 4, 5
PDF;
6.1 Paralelismo, Eficiência e Escalabilidade;
6.2 Taxonomia de Flynn e Vetorização;
  20 Memória Distribuída; [PH] Cp. 6;
[WS] Cp. 17;
[HP] Cp. 6
PDF;
6.3 Hardware Multithreading;
6.4 Arquiteturas com Memória Distribuída;
6.5 Topologias de Conexão;
11ª 21      
  22      
12ª 23      
  24      


div.png

8 Notas

A planilha com notas das atividades e conceitos pode ser vista aqui.

9 Critério de Avaliação

warning.png Honestidade Acadêmica

Entre outros, o código de ética da UFABC estabelece em seu artigo 25 que é eticamente inaceitável que os discentes:
I - fraudem avaliações;
II - fabriquem ou falsifiquem dados;
III - plagiem ou não creditem devidamente autoria;
IV - aceitem autoria de material academico sem participação na produção;
V - vendam ou cedam autoria de material acadêmico próprio a pessoas que não participaram da produção.

Muitos ainda têm dúvidas sobre a interpretação das regras definidas pelo Código de Ética da UFABC. Por esta razão, diversos professores elaboraram um documento (disponível aqui) com vários exemplos e esclarecendo a interpretação das regras acima. Abaixo uma versão resumida. Sempre consulte o documento completo ou converse com o seu professor em caso de dúvidas!

  • Regra 1 - Você não pode enviar para avaliação um trabalho que não seja de sua própria autoria ou que seja derivado/baseado em soluções elaboradas por outros.
  • Regra 2 - Você não pode compartilhar a sua solução com outros alunos nem pedir aos seus colegas que compartilhem as soluções deles com você.
  • Regra 3 - Nos trabalhos enviados para avaliação você deve indicar eventuais assistências que você tenha recebido.

    ATENÇÃO: todos os trabalhos enviados para avaliação poderão ser verificados por um sistema automatizado de detecção de plágio.

Qualquer violação às regras descritas acima implicará:

  • Descarte dos conceitos atribuídos a TODAS as tarefas avaliativas regulares de TODOS os envolvidos, causando assim suas reprovações automáticas com conceito F .
  • Possível denúncia à Comissão de Transgressões Disciplinares Discentes da Graduação, a qual decidirá sobre a punição adequada à violação que pode resultar em advertência, suspensão ou desligamento , de acordo com os artigos 78-82 do Regimento Geral da UFABC.
  • Possível denúncia apresentada à Comissão de Ética da UFABC, de acordo com o artigo 25 do Código de Ética da UFABC.

9.1 Composição das notas

A avaliação da disciplina será composta pela nota do projeto que será entregue em 3 fases. As fases tem pesos 2, 2 e 4 respectivamente.

\begin{equation*} N_F = \frac{2F_1 + 2F_2 + 4F_3}{8} \end{equation*}

O conceito final (\(C_F\)) será obtido de acordo com a equação abaixo:

\begin{equation*} C_F = \begin{cases} \textbf{F} ,& \text{se } N_F \in [0,0;5,0) \\ \textbf{D} ,& \text{se } N_F \in [5,0;6,0) \\ \textbf{C} ,& \text{se } N_F \in [6,0;7,0) \\ \textbf{B} ,& \text{se } N_F \in [7,0;8,5) \\ \textbf{A} ,& \text{se } N_F \in [8,5;10,0] \end{cases} \end{equation*}

Alunos de pós-graduação não possuem o conceito D, que existe apenas para alunos de graduação. Caso um aluno da pós-graduação obtenha conceito D pela fórmula acima, então o conceito atribuído será automaticamente F.

Caso seja verificado ocorrência de plágio no projeto final, o aluno será automaticamente reprovado com F

9.2 Recuperação

A resolução ConsEPE nº 182 assegura a todos os alunos de graduação com \(C_F\) igual a D ou F o direito a fazer uso de mecanismos de recuperação.

A recuperação será feita através de uma nova entrega do projeto final levando em consideração a correção do projeto original e seguido de uma entrevista com o docente a ser marcada em uma data a ser combinada entre o docente e o discente.

A sua nota será utilizada para compor a o conceito pós-recuperação \(C_R\) conforme as equações abaixo:

\[N_R = \frac{P_R + N_F}{2}\]

Caso 1 \(C_F = D\):

\begin{equation*} C_R = \begin{cases} \textbf{C} ,& \text{se } N_R \geq 6,0 \\ \textbf{D} ,& \text{caso contrário} \end{cases} \end{equation*}

Caso 2 \(C_F = F\):

\begin{equation*} C_R = \begin{cases} \textbf{D} ,& \text{se } N_R \geq 5,0 \\ \textbf{F} ,& \text{caso contrário} \end{cases} \end{equation*}

9.3 Regulamentações Relevantes


div.png

10 Bibliografia

O principal texto utilizado neste curso será o PH Quinta Edição.

ph.jpegph_pt.jpg

[PH]

  • Patterson, D.A., Hennessy, J.L. Organização e Projeto de Computadores: a Interface Hardware/software, 5a Edição.
  • Patterson, D.A., Hennessy, J.L. Computer Organization and Design: The Hardware/Software Interface, 5th Edition.

Infelizmente a biblioteca só dispõe da 3a e 4a edições (tanto em português quanto inglês). Essas edições antigas, contudo, têm um bom nível de compatibilidade com a 5a edição que utilizaremos durante o curso.

10.1 Bibliografia complementar

  • [WS] Stallings, W. Arquitetura e organização de computadores. 8ª edição.
  • [AT] Tanenbaum, A.S. Organização estruturada de computadores. 5ª edição.
  • [HP] Hennessy, J.L., Patterson, D.A. Arquitetura de computadores: uma abordagem quantitativa. 6ª edição.

Última atualização: 2021-04-27 11:48
Emacs 27.2 (Org-mode 9.4.5)

Notas de Rodapé:

1

Apesar da premissa do vídeo estar errada, isso não diminui em nada o fato dele ser um ótimo exercício de exploração e descrição do funcionamento do hardware do Sega Saturn. O erro da premissa é que o DSP era de fato capaz de executar emitir 6 instruções por vez, como pode ser visto na página 157 da documentação.

Autor: Emilio Francesquini
e.francesquini@ufabc.edu.br

Criado em: 2021-04-27 ter 11:48