Introdução à Arquitetura de Computadores Um pouco sobre mim • João Barreto • Percurso académico • LEIC + MEIC + DEIC, IST • Durante o PhD, passei temporadas no EPFL (Lausanne, Suiça) e Sorbonne Université (Paris, França) • Professor universitário há ~15 anos • Principalmente em disciplinas relacionadas com as camadas “sistema” • Sistemas Operativos, Sistemas Distribuídos, e agora IAC • Investigação: ajudar os programadores a fazer o melhor uso das arquiteturas de computadores modernas • Com a ajuda de muitos alunos de mestrado e doutoramento • https://www.dpss.inesc-id.pt/~jpbarreto/ 2 Uma (r)evolução permanente EDSAC I, June 1948, University of Cambridge A revolução, hoje • Em declínio: Lei de Moore e Dennard Scaling • Em crescimento: Aceleradores • Novas aplicações • Telemóveis (5G, 6G) • Internet (e.g., World Wide Web) • Motores de busca, redes sociais, streaming • Inteligência artificial • Bioinformática • Etc. Os computadores estão em todo o lado! Desempenho dos processadores e Lei de Moore Principais desafios: eficiência energética, paralelismo (instruções), latência (memória) Em resumo • Nos últimos 50 anos, a Lei de Moore comandou os avanços tecnológicos • Melhorias de desempenho/energia sem ter de mudar o software • “daqui a 18 meses temos um processador 2x mais rápido ao mesmo custo” • Na última década, este crescimento entrou em declínio • • • • Fim da Dennard scaling (levando à estagnação da frequência dos relógios do CPU) Desaceleração brusca da Lei de Moore (custo/transístor) Falta de alternativa à tecnologia CMOS Eficiência energética é o principal constrangimento • Já não há “almoços grátis” para os programadores • Paralelização e distribuição dos sistemas • Aceleradores: novas arquiteturas “application-specific” (ML, crypto, redes) Tipos de computadores • Computadores pessoais (PCs) • De uso geral (“general purpose”), com uma grande variedade de software • Necessidade de bom compromisso custo/desempenho • Servidores • Baseados em rede • Elevada capacidade, desempenho e fiabilidade Tipos de computadores • Supercomputadores • Servidor “especial” para cálculos científicos e de engenharia altamente complexos • Elevadíssimo desempenho mas representando uma fração pequena do mercado global • Computadores embebidos • “Escondidos” como componentes de múltiplos sistemas (industriais, automóveis, IoT, etc.) • Restrições muito fortes no compromisso energia/desempenho/custo A era pós-PC “Por baixo” dos vossos programas • Software da aplicação • Escrito numa linguagem de alto nível (C, Java, etc.) • Software do sistema • Compilador: traduz o vosso código em código-máquina • Sistema operativo • Comunicações com dispositivos de entrada e saída • Gerir memória e armazenamento • Agendar tarefas e partilhar recursos • Hardware • Processador, memória, controladores de E/S Abstraindo os bits • Linguagem de alto nível • Nível de abstração próximo do domínio do problema • Foco na produtividade e portabilidade • Linguagem Assembly • Representação textual das instruções • Representação no hardware • Bits • Instruções e dados codificados A disciplina O que vão aprender • Como é que os programas são traduzidos em linguagem máquina • E como é que o hardware executa esses programas • A interface hardware/software • O que determina o desempenho de um programa • E como pode ser melhorado • Como é que a arquitetura do hardware pode melhorar o desempenho • As bases arquiteturais para disciplinas como Sistemas Operativos, Organização de Computadores e Compiladores 7 ideias fundamentais • Usar abstrações para simplificar o desenho • Acelerar o caso comum • Desempenho através de paralelismo • Desempenho através de pipelining • Desempenho através de predição • Hierarquia de memórias • Confiabilidade através de redundância Competências • Teóricas • Funcionamento básico de um computador: circuitos digitais, representação de números, arquitetura básica de um computador, execução das instruções • O computador como um Sistema: programação em assembly e C, instruções, rotinas, periféricos, interrupções • Outros aspetos: estrutura interna do processador, microprogramação, pipelines, caches e memória virtual • Laboratórios • Montagem e implementação de circuitos digitais (em simulador) • Desenvolvimento e execução de programas em linguagem assembly Bibliografia • Principal [Delgado&Ribeiro_2014] Arquitetura de computadores, 5ª edição • Secundária [Patterson&Hennessy_2021] Computer Organization and Design. The Hardware/Software Interface. RISC-V Edition, 2nd edition [Arroz&Monteiro&Oliveira_2020] Arquitectura de Computadores: dos Sistemas Digitais aos Microprocessadores, 5ª edição Aulas teóricas • 5 horas/semana (2 x 2h + 1h) • Aulas teórico-práticas: • exposição da matéria • resolução de exercícios • avaliação (testes) nas próprias aulas • Procurem estudar o livro antes ou depois de cada teórica • A aprendizagem é contínua: o truque para o sucesso é nunca perder o contacto com a matéria Laboratórios • 3 horas/semana (2 x 1.5h) • Começam na segunda semana • Grupos de, preferncialmente, 3 alunos (menos só se houver espaço) • Formados dentro do turno laboratorial em que estão inscritos • Inscrições no Fenix abrem a seguir às teóricas de hoje • Guiões de laboratório: • Estão orientados ao auto-estudo e para o projeto • Podem ser feitos em qualquer altura • Irão sendo disponibilizados algum tempo antes da aula Avaliação • Competências: • teóricas (60%): três MAP45 (20% cada), no horário das aulas • práticas (40%): projeto (10% versão inicial, 30% versão final) • Nota final = somatório pesado das notas das competências teóricas e práticas • Nota mínima para média dos testes = 8,0 valores • Nota mínima para nota prática = 8,0 valores • Na data do exame (30 junho, 8h00): • Podem melhorar só um, dois ou os três MAPs • Conta a melhor nota entre um MAP e a parte respetiva do exame Provas de avaliação • MAPs (individuais): • Nas aulas teóricas (30 min, a 22 maio, 30 maio e 12 junho) • Exame (30 junho) • Projeto (em grupo, mas notas individuais): • • • • • Enunciado disponível em breve Versão intermédia (26 maio, 23h59, no Fenix) Entrega final (9 junho, 23h59, no Fenix) Há aulas de apoio ao projeto antes de cada entrega Discussões na última semana de aulas (horário normal do laboratório, horas a divulgar para cada grupo) Material de apoio • Site da disciplina no Fenix • Fóruns de discussão: moodle.dei.tecnico.ulisboa.pt • Ambiente de aprendizagem: simulador • Microprocessador pedagógico (PEPE – Processador Especial Para Ensino) • Simulador: processador, memória e dispositivos • Trabalhos práticos (guiões do laboratório ou projeto) podem ser feitos fora das aulas Simulador Não esquecer • Laboratórios só arrancam na próxima semana • Inscrevam-se nos vossos grupos laboratoriais no Fénix Bibliografia Recomendada • [Delgado&Ribeiro_2014] • Cap. 1 Secundária/adicional • [Patterson&Hennessy_2021] • Cap. 1