Objetivos | A UC estrutura-se no binómio software/hardware para compreender a relações entre os algoritmos e as cargas das aplicações e assim tirar partido, em termos de desempenho das tecnologias dos processadores atuais. Esta UC tem em vista a aquisição de competências que abrangem um vasto leque de conhecimentos de natureza: i) concetual, tais como paradigmas e modelos de programação e ii) experimental, como é caso de ambientes de computação ou de ferramentas de análise de perfis de execução. |
Programa | 1. Métricas de Avaliação do Desempenho e respetiva inter-relação: tempo de execução, número médio de ciclos de relógio por instrução (CPI), período de relógio e número de instruções executadas; ciclos por elemento (CPE); 2. Hierarquia de Memória: conceitos; localidade, organização (mapeamento, políticas de escrita e substituição); 3. Paralelismo ao nível das instruções: encadeamento e super-escalaridade; 4. Paralelismo ao nível dos dados: processamento vetorial; 5. Paralelismo ao nível dos fios de execução: múltiplos núcleos de processamento; 6. Computação heterogénea : CPUS/GPUS, modelo de programação. |
Bibliografia | Computer Systems: A Programmer's Perspective, 3rd Edition; Randal E. Bryant and David R. O'Hallaron, ISBN13: 9780134092669, Pearson, 2016. Multicore and GPU Programming An Integrated Approach, Gerassimos Barlas, Elsevier, Inc 2015. Computer Organization and Design, David Patterson and John Hennesy, 5th Edition, Elsevier, Inc 2013. Parallel Programming for Multicore and Cluster Systems, Thomas Rauber, Gudula Rünger, Springer-Verlag Berlin Heidelberg 2010, 2013. Computer Architecture, A Quantitative Approach-Morgan Kaufmann, Hennessy&Patterson-, 5th Edition, Elsevier, Inc, 2012. |
Resultados da aprendizagem | Após a frequência da UC os alunos deverão ser capazes de: - Caracterizar as métricas relativas ao desempenho, na sua relação com a codificação de programas C/C++; - Identificar o impacto da utilização explicita/implícita da hierarquia de memória; - Descrever os conceitos associados ao encadeamento da execução de instruções e as limitações inerentes a este paradigma; - Justificar o impacto associado à super-escalaridade no desempenho dos processadores; - Aplicar as técnicas de processamento vetorial de código em processadores e aceleradores; - Identificar as oportunidades para explorar ao nível lógico e físico as modernas arquiteturas com múltiplos processadores, através da utilização do paralelismo de múltiplos fios de execução. |