A disciplina consiste de duas aulas na semana. O objetivo é demonstrar a importância do projeto de hardware no custo, desempenho e e consumo energético de um sistema computacional. A partir de um exemplo comum, um algoritmo de multiplicação de matrizes, discutimos como o projeto de conjunto de instruções pode ser usado para implementar o código, como a organização interna do processador pode ser aproveitada para melhorar o desempenho, a forma com que a organização da memória pode ser aproveitada para diminuir a latência de acesso aos dados e por fim como as arquiteturas paralelas modernas podem otimizar a execução. As aulas são expositivas, sendo que a cada semana um grupo de atividades é liberado para a turma. Por fim, demonstrações práticas de execução de código ajudam a firmar os conceitos apresentados.
Serão 3 notas. Três provas escritas, que devem ser resolvidas de forma individual. Cada prova vale de 0 a 10. A média da disciplina será a média destas 3 notas. Pontos extra podem ser distribuídos para exercícios feitos durante as aulas.
Data | Assunto | Comentários | Atividades | Notas |
---|---|---|---|---|
15/08/2022 | Introdução | Apresentação da Disciplina; Introdução. | Atividade 01 | Primeira Nota |
17/08/2022 | Oito grandes ideias sobre arquitetura de computadores; Por trás do programa. | |||
22/08/2022 | Sob as tampas; Tecnologias para construção de processadores e memórias. | Atividade 02 | ||
24/08/2022 | Desempenho | |||
29/08/2022 | A barreira da potência; Mudança de mares: Passando de processadores para multiprocessadores; Vida real: Fabricação e benchmarking do Intel Core i7; Falácias e Armadilhas. | Atividade 03 | ||
31/08/2022 | Instruções: A linguagem dos Computadores | Introdução; Operações do hardware do computador; Operandos do hardware do computador. | ||
05/09/2022 | Números com e sem sinal; Representando instruções no computador; Operações lógicas. | Atividade 04 | ||
07/09/2022 | Instruções para tomada de decisões; Suporte a procedimentos no hardware do computador; Comunicando-se com as pessoas. | |||
12/09/2022 | Endereçamento no MIPS para operandos imediatos e endereços de 32 bits; Paralelismo e instruções: sincronização; Traduzindo e iniciando um programa. | Atividade 05 | ||
14/09/2022 | Um exemplo de ordenação em C para juntar tudo isso; Arrays versus ponteiros; Vida real: instruções ARMv7 (32bits) | |||
19/09/2022 | Vida real: instruções x86; Vida real: instruções ARMv8 (64bits); Falácias e armadilhas. | Atividade 06 | ||
21/09/2022 | Primeira Prova | |||
26/09/2022 | Aritmética Computacional | Introdução; Adição e subtração; Multiplicação; Divisão. | Atividade 07 | Segunda Nota |
28/09/2022 | Ponto Flutuante. | |||
03/10/2022 | Paralelismo e aritmética computacional: paralelismo subword; Vida real: Extensões SIMD streaming e extensões avançadas de vetor no x86; Mais rápido: Paralelismo subword e multiplicação matricial. | Atividade 08 | ||
05/10/2022 | O Processador | Introdução | ||
10/10/2022 | Visão Geral do Pipelining | Atividade 09 | ||
12/10/2022 | Paralelismo e paralelismo avançado em nível de instrução. | |||
17/10/2022 | Vida real: pipelines do ARM Cortex-A8 e Intel Core i7; Mais rápido: Paralelismo em nível de instrução e multiplicação matricial; Falácias e armadilhas. | Atividade 10 | ||
19/10/2022 | Grande e Rápida: Explorando a Hierarquia de Memória | Introdução; Tecnologias de Memória. | ||
24/10/2022 | Princípios Básicos de Cache; Medindo e melhorando o desempenho da cache. | Atividade 11 | ||
26/10/2022 | Hierarquia de memória estável; Máquinas virtuais; Memória Virtual. | |||
31/10/2022 | Uma estrutura comum para hierarquias de memória; Usando uma máquina de estado finito para controlar uma cache simples. | Atividade 12 | ||
02/11/2022 | Feriado | Finados | ||
07/11/2022 | Segunda Prova | Atividade 13 | Terceira Nota | |
09/11/2022 | Grande e Rápida: Explorando a Hierarquia de Memória | Paralelismo e hierarquias de memória: coerência da cache; Vida real: as hierarquias de memória ARM Cortex-A8 e Intel Core i7; Mais rápido: bloqueio de cache e multiplicação matricial. | ||
14/11/2022 | Processadores paralelos do cliente à nuvem | Introdução; A dificuldade de criar programas com processamento paralelo; | Atividade 14 | |
16/11/2022 | SISD, MIMD, SIMD, SPMD e Vetor; Multithreading do hardware; | |||
21/11/2022 | Multicore e outros multiprocessadores de memória compartilhada; Introdução às unidades de processamento de gráficos. | Atividade 15 | ||
23/11/2022 | Clusters, computadores em escala warehouse e outros multiprocessadores de passagem de mensagens; Introdução às topologias de rede multiprocessador. | |||
28/11/2022 | Benchmarks de multiprocessador e modelos de desempenho. | Atividade 16 | ||
30/11/2022 | Vida real: benchmarking e rooflines do Intel Core i7 960 e GPU NVIDIA Tesla. | |||
05/12/2022 | Mais rápido: processadores múltiplos e multiplicação matricial. | Atividade 17 | ||
07/12/2022 | Terceira Prova | |||
12/12/2022 | Segunda Chamadas |