Anderson Oliveira da Silva

   

Homes
Pessoal
PUC-Rio
DI PUC-Rio
CCE PUC-Rio
PROMINP-DI

Disciplinas
Extensão
Graduação
Pós-graduação

Publicações
Livro

Palestras
CCCI PUC-Rio
ECOA PUC-Rio

INF1014 DI

Cursos
Externos

CIAW

 

Sistemas de Informação - Ciência da Computação - Graduação

INF1029 - Intrudução à Arquitetura de Computadores

Material Didático:

Parte I - Introdução

Slides Vol.1 - Conceitos Básicos e Evolução do Computador
– Conceitos Básicos » Arquitetura de Computadores x Organização de Computadores » Funções do Computador x Estrutura do Computador • Computador Simples com um Único Processador • Computador com Múltiplos Processadores (multicore) – Sistemas Embarcados e Fortemente Embarcados » Processadores para aplicações x Processadores Dedicados » Microprocessador x Microcontroladores – Evolução da Arquitetura de Computadores – Evolução da Arquitetura Intel x86 – Evolução da Arquitetura ARM – Computação em Nuvem – Internet das Coisas (IoT).

Slides Vol.2 - Questões de Desempenho
– Projeto com foco no desempenho » Técnicas para Aumentar a Velocidade do microprocessador » Técnicas para Melhorar a Interligação com a memória » Técnicas para Melhorar o Tratamento dos Dispositivos de E/S » Mudanças na Organização e Arquitetura do Processador – Desempenho dos sistemas paralelos e multicore » Multicore, MICs e GPGPUs » Lei de Amdhal » Lei de Little – Mediadas básicas de desempenho do computador » Velocidade de clock » Taxa de execução de instrução (MIPS e MFLOPS) » Benchmarks da SPEC

Parte II – Unidade Central de Processamento

Slides Vol.3 - Estrutura e Função do Processador
– Organização do Processador » UC, ALU, Registradores, Barramento Interno – Organização dos Registradores » Registradores de visíveis ao usuário x Registradores de controle e estado – Ciclo da Instrução » Buscar, Executar e Interromper – Pipeline de Instruções » Estratégia do pipeline » Desempenho do pipeline » Hazards do pipeline – Família de Processadores x86 – Processadores ARM.

Slides Vol.4 - Computadores com Conjunto Reduzido de Instruções
– Características da Execução de Instruções » Operações, Operandos, Chamadas de Procedimentos – Uso de um Grande Banco de Registradores » Janelas de Registradores, Variáveis Globais, Registradores x Cache – Otimização de Registradores baseada em Compiladores » Estratégias para maximizar o uso dos registradores – Arquitetura RISC » Principais características da arquitetura RISC » CISC x RISC – Pipeline no RISC » Pipeline com instruções regulares » Otimização de pipeline.

Slides Vol.5 - Processamento de Instruções Vetorias - Aula Prática
– Intel Streaming SIMD Extensions Technology » SSE2, SSE3, SSE4, AVX, AVX2, FMA e AVX-512 » Registrados especiais usados pelas instruções vetoriais » Conjunto de instruções vetoriais – Intel Intrinsics – Parte 1 » Biblioteca de primitivas em linguagem C » Exemplos práticos 1 » Exercício prático 1 – Intel Intrinsics – Parte 2 » Biblioteca de primitivas em linguagem C » Exemplos práticos 2 » Exercício prático 2.

Slides Vol.6 - Paralelismo em Nível de Instruções e Processadores Superescalares
– Visão Geral » Superescalar x Superpipeline – Aspectos de Projeto » Paralelismo em nível de instrução e paralelismo de máquina – Microarquitetura Intel Core – ARM Cortex-A8 – ARM Cortex-M3.

Parte III - Organização Paralela

Slides Vol.7 - Processamento Paralelo
– Organização de Múltiplos Processadores » Taxonomia de Flynn – Multiprocessadores Simétricos » Características e Organização – Coerência de Cache e Protocolo MESI » Soluções por software e hardware – Multithreading e Chips Multiprocessadores – Acesso Não Uniforme à Memória (NUMA).

Slides Vol.8 - Processamento Paralelo (Threads) - Aula Prática
– Conceito de Thread » Threads Modo Usuário » Threads Modo Kernel » Threads Híbridas – Threads POSIX x Threads Nativas – Biblioteca PThread – Parte 1 » Exemplos Práticos 1 – Exercíco Prático 1 – Problemas de Concorrência e Sincronização » Semáforos Mutex » Semáforos Contadores » Monitores (Signal e Wait) – Biblioteca PThread – Parte 2 » Exemplos Práticos 2 » Exercício Prático 2

Slides Vol.9 - Clusters de Computadores
– Características dos clusters de computadores – Tipos de cluster de computadores » Alta disponibilidade (HA – High Availability) » Alto desempenho de computação (HPC – High Performance Computing) » Balanceamento de carga (LB – Load Balancing) – Estrutura Física dos Clusters » Cluster Simétrico x Cluster Assimétrico – Estrutura Lógica dos Clusters – Tolerância a falhas » Configuração Ativa/Passiva » Configuração Ativa/Ativa » Configuração N-to-1 – Compartilhamento de Dados » Armazenamento Compartilhado x Replicação de Dados.

Slides Vol.10 - Computadores Multicore
– Questões sobre Desempenho de Hardware – Questões sobre Desempenho de Software – Organização Multicore – Organização Multicore Heterogênea » Arquitetura de conjunto de instruções diferentes • CPU combinada com GPU » Arquitetura de conjunto de instruções equivalentes • Core de Alto Desempenho combinado com Core de Baixo Consumo de Energia – Intel Core I7-990X – ARM Cortex-A15 MPCore.

Slides Vol.11 - Unidades de Processamento Gráfico de Uso Geral
– Noções Básicas sobre a CUDA – GPU x CPU – Visão Geral da Arquitetura de uma GPU – CUDA Toolkit » Descrição da biblioteca » Controle de alocação de memória: Controle manual do programador; Controle automático via Unified Memory » Exemplos práticos.

Parte IV – Sistema de Computação

Slides Vol.12 - Interconexão do Computador
– Interconexão de Barramento – Interconexão Ponto a Ponto » Quick Path Interconnect (QPI) da Intel – Barramento PCI » PCI Express (PCIe).

Slides Vol.13 - Memória Cache
– Visão Geral do Sistema de Memória » Localização, Capacidade, Unidade de Transferência, Método de Acesso, Desempenho, Tipo Físico, Características Físicas e Organização – Princípios da Memória Cache » Relação entre cache L1, L2 e L3 – Elementos de Projeto da Cache » Endereços da Cache » Política de Escrita » Função de Mapeamento » Número de Caches » Algoritmo de Substituição • LRU, FIFO, LFU e Aleatória.

Slides Vol.14 - Memória Interna
– Tipos de Memória Semicondutora » DRAM – Dynamic RAM e SRAM – Static RAM » SDRAM – Synchronous DRAM » DDR-SDRAM – Double-Data-Rate SDRAM » ROM, PROM, EPROM e EEPROM » Memória Flash (NOR e NAND) – Correção de Erro » SEC – Single-Error-Correcting » SEC-DED – SEC Double-Error-Detecting – Novas Tecnologias de Memória de Estado Sólido Não Voláteis » STT-RAM – Spin-Transfer Torque RAM » PCRAM – Phase-Change RAM » ReRAM – Resistive RAM.

Slides Vol.15 - Memória Externa
– Disco Magnético » Leitura Magnética e Mecanismo de Gravação » Organização e Formatação de Dados » Características Físicas » Parâmetros de Desempenho – RAID (Redundant Array of Independent Disks) » RAID nível 0, 1, 2, 3, 4, 5 e 6 – Drives de Estado Sólido (SSD) » SSD x HDD » Organização de SSD – Memória Óptica » CD, DVD e Blu-ray DVD – Fita Magnética » Métodos de leitura e gravação.

Parte V – Unidade de Controle

Slides Vol.16 - Unidade de Controle do Microcontrolador
– Arquitetura do Microcontrolador ATmega328p – Biblioteca/Toolkit do Arduino Uno – Exemplos

Material de laboratório
Prática 1 - Instruções Vetoriais (AVX/AVX2/FMA) - Exemplos
Prática 1 - Instruções Vetoriais (AVX/AVX2/FMA) - Exercícios

Prática 1 - Instruções Vetoriais (AVX/AVX2/FMA) - Trabalho1
Prática 2 - Processamento Paralelo - Threads - Exemplos
Prática 2 - Processamento Paralelo - Threads - Exercícios
Prática 2 - Processamento Paralelo - Threads - Trabalho2
Prática 3 - Processamento Paralelo - GPGPU - Exemplos
Prática 3 - Processamento Paralelo - GPGPU - Exercícios
Prática 3 - Processamento Paralelo - GPGPU - Trabalho3
Prática 4 - Programação de Microcontrolador - Arduino - Exemplos
Prática 4 - Programação de Microcontrolador - Arduino - Exercícios
Prática 4 - Programação de Microcontrolador - Arduino - MultFuncShield-Lib

Roteiros dos trabalhos
Trabalho 1 - Aritmética de matrizes com processamento vetorial

Trabalho 2 - Aritmética de matrizes com processamento vetorial e paralelo
Trabalho 3 - Aritmética de matrizes com processamento paralelo em GPU
Trabalho 4 - Programação de Microcontrolador com Arduino

Listas de Exercícios
Exercícios Conceituais e Práticos - Parte I

Exercícios Conceituais e Práticos - Parte II

Datas das Provas
P1 - 7/Outubro/2019 - Sala L110
P2 - 4/dezembro/2019 - Sala L206

Resultado 2019.2
Publicação das notas dos trabalhos e provas.

Saída da execução dos trabalhos durante a correção.

Referência Bibliográfica Principal
Arquitetura e Organização de Computadores, Willian Stallings
10a edição - Editora Pearson - 2018



Referência Bibliográfica Complementar
Clusters de Alta Disponibilidade, Ribeiro, M.A.D.
Orientador: da Silva, A.O. - TCC Especilização em Redes
DI/CCE/PUC-Rio - 2011