Logotipo e link para a Universidade do Minho

Sistemas de Computação
Mestr Integr Engª Informática, 1º ano
2020/2021
Docente responsável: A.J.Proença

Vista da Rua do Souto no Séc. XVI

 

Sumários

Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12

Última Modificação:22 Mai 2021

 

 

 departamento de informática

Nota 1: Os sumários das aulas que já ocorreram estão a preto, enquanto as propostas de sumário para as sessões seguintes estão a cinzento. Sempre que haja documentação a disponibilizar pertinente para uma sessão que ainda não decorreu, essa indicação deixa de estar a cinzento.

Nota 2: As referências nos sumários a textos de consulta estão abreviadas para Sta (livro/resumo de Stallings, sugerido como complementar em anos anteriores), Bry (livro/resumo de Bryant), e P&H (livro de Patterson & Hennessy ); são normalmente seguidas do respectivo capítulo/secção, e quando existe em formato electrónico é indicado o respectivo link.

 

Semana 1

18-fev- 21 (T1, T2)
Metodologia de funcionamento da disciplina com análise ao website da UC (em http://gec.di.uminho.pt/miei/sc/): princípios básicos, modo de funcionamento e respetivo planeamento, elementos e modelos de avaliação.
Introdução aos conceitos de "computador" e de "informação" no contexto de um computador.
Sistemas de numeração e conversão de bases.
(Notas de estudo: slides de introdução à matéria (ISC_1_short), contendo já a matéria a lecionar na próxima aula; notas de estudo relativos à introdução aos sistemas de computação (ISC, Cap.1) e ainda notas sobre representação binária de números; o vídeo com  a gravação da aula está colocado no BB; enunciado do  TPC1, para ser submetido no BB no local associado a cada um dos  turnos, impreterivelmente até 24 horas antes do início da sessão PL da semana seguinte).

19-fev- 21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Não houve aula ainda.

22-fev- 21 (PL01, PL02, PL08, PL11)
Não houve aula ainda.

23-fev- 21 (T1, T2)
Representação binária de valores numéricos positivos e negativos: sinal e amplitude, complemento para 1, complemento para 2, por excesso.
(Notas de estudo: os slides e os vídeos disponibilizados na semana anterior)

Semana 2

25-fev- 21 (T1, T2)
Representação binária de valores reais em vírgula flutuante: noção básicas e vantagens duma normalização; apresentação da norma IEEE 754 na representação de valores binários em vírgula flutuante.
(Notas de estudo: slides completos sobre representação de informação (
ISC_1), contendo ainda  matéria da próxima aula; o vídeo com a gravação da aula está colocado no BB; enunciado do  TPC2, para ser entregue, impreterivelmente, até 24 horas antes do início da sessão PL da semana seguinte)

26-fev- 21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Resolução de exercícios com binários inteiros.

01-mar- 21 (PL01, PL02, PL08, PL11)
Resolução de exercícios com binários inteiros.

02-mar- 21 (T1, T2)
Representação da informação não numérica no computador, utilizando bits: texto e respectivos alfabetos (referência aos códigos Baudot, Braille, ASCII 7/8 bits e UNICODE), codificação de informação audiovisual com introdução a técnicas de compactação, desde imagens estáticas a imagens animadas e ao som; codificação dos comandos de controlo de um processador.
Análise sucinta da estrutura interna dum computador elementar, nomeadamente a estrutura e funções do processador: a unidade de controlo, o conjunto de registos e as unidades funcionais.
(Notas de estudo: os mesmos slides da aula anterior
e ainda os slides ISC_2; texto ISC (Cap.2); referências complementares: Sta Ch1.1 e 1.2 Ch 3.1, 3.2)

Semana 3

04-mar-21 (T1, T2)
Introdução aos níveis de abstracção presentes num computador (o nível HLL, o nível da linguagem assembly e o da linguagem máquina).
Análise detalhada da execução de uma instrução em linguagem máquina: a  busca de uma instrução à memória, caracterizando os barramentos de endereços, controlo e de dados, a atualização do apontador para a próxima instrução (IP), a descodificação duma instrução e a sua execução (incluindo a eventual busca de operando(s) à memória.
(Notas de estudo: slides
ISC_3; enunciado do TPC3, cuja resolução deverá ser entregue, impreterivelmente, até 24 horas antes do início da sessão PL da semana seguinte; ficheiro TPC1r com os resultados dos exercícios propostos em TPC1)

05-mar-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.

08-mar-21 (PL01, PL02, PL08, PL11)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.

09-mar-21 (T1, T2)
Análise do processador ao nível da arquitetura do instruction set (ISA): (i) introdução às operações num processador, com análise do n.º de operandos em cada instrução e à localização de operandos (escalares em registos, e estruturados em memória), (ii) registos visíveis ao programador (em arquiteturas RISC e no IA-32), (iii) modos de acesso aos operandos (em arquiteturas RISC e no IA-32), (iv) tipos de instruções presentes num processador (para transferência de informação, operações aritméticas e lógicas, para controlo do fluxo de execução), (v) análise de formatos de instruções (no IA-32 e em processadores RISC, MIPS e ARM), (vi)  ordenação em memória dos bytes presentes num número constituído por vários bytes (little-endian, big-endian).
(Notas de estudo: texto ISC (Cap. 3, 4.1 a 4.5, 5,1 a 5.3 e 5.7), Bry (Ch.1.5 e 1.6), Sta (Ch 3.2); a bibliografia de base iniciada nesta aula e com continuação para as próximas aulas sobre o nível ISA segue quase exclusivamente o livro CSAPP, com destaque para o Ch.3;  as noções apresentadas e analisadas nos dois primeiros capítulos do livro foi sendo coberta pelo texto entretanto disponibilizado (ISC), enquanto esta aula e a seguinte seguem essencialmente as secções 3.4 e 3.5 do livro; o ficheiro electrónico com a versão preliminar dos três primeiros capítulos do livro encontra-se disponível, para estudo,
aqui, 1.51MiB.
Slides:
ISC_4 e o instruction set do IA-32 numa página A4; o vídeo com a gravação da aula está colocado no BB;  )

Semana 4

11-mar-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: modelo da arquitectura ISA do IA-32 no desenvolvimento de programas, com a visão do par processador-memória na perspectiva de um programador.
(Notas de estudo: slides ISA_1 ; ficheiro TPC2r com os resultados dos exercícios propostos em TPC2 ).

12-mar-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Análise crítica da resolução de exercícios de codificação binária de instruções do ISA-16 e da análise de tráfego nos barramentos entre o CPU e a memória na execução de instruções.
Treino das capacidades de visualização de conceitos sobre sistemas de computação, através de um exercício experimental online com estudantes-atores: 5 atores a representar a execução de instruções em linguagem máquina (corpo de uma função em C compilada para IA-16).

15-mar-21 (PL01, PL02, PL08, PL11)
Análise crítica da resolução de exercícios de codificação binária de instruções do ISA-32 e da análise de tráfego nos barramentos entre o CPU e a memória na execução de instruções.
Treino das capacidades de visualização de conceitos sobre sistemas de computação, através de um exercício experimental online com estudantes-atores: 5 atores representaram a execução de instruções em linguagem máquina (corpo de uma função em C compilada para IA-16).

16-mar-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: modos de especificação de operandos e modos de os aceder nas instruções mais comuns de transferência de informação e em operações aritméticas/lógicas. Exemplo detalhado de utilização de um modo de endereçamento simples à memória.
(Notas de estudo: slides
 ISA_2 ).

Semana 5

18-mar-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: instruções específicas para manuseamento de apontadores e para controlo do fluxo de execução de instruções (conceito de códigos de condição e estrutura da codificação de jumps); técnicas de codificação da estrutura de controlo  if-else  (e sua generalização) presente em C, com análise detalhada de um exemplo.
(Notas de estudo: Bry (Ch 3.6), e primeira parte dos slides
ISA_3 ; texto do enunciado do TPC4 (e respectivo guião laboratorial), cuja resolução deverá ser entregue no BB)

19-mar-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Continuação do exercício experimental da semana anterior.

22-mar-21 (PL01, PL02, PL08, PL11)
Continuação do exercício experimental da semana anterior.

23-mar-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: técnicas de codificação das estruturas de controlo  do-while, while, for  (e sua generalização) presentes em C, com análise detalhada de um exemplo.
(Notas de estudo: Bry (Ch 3.6), e parte restante dos slides
ISA_3; ficheiro TPC3r  reformulado com os resultados dos exercícios e do guião teatral propostos em TPC3.
Notas adicionais para as sessões laboratoriais da próxima semana (TPC4): (i) a plataforma computacional a usar sempre será um servidor Unix (Linux) com as ferramentas GCC adequadas para SC, acessível remotamente (ler o guião em TPC4 para saber como), (ii) os códigos de acesso ao servidor remoto foram já remetidos por email a todos os inscritos na UC, e (iii) disponibiliza-se aqui uma introdução ao ambiente Unix.)

Semana 6

25-mar-21 (T1, T2)
Evolução das tecnologias e eficiência: caracterização das arquiteturas RISC; oportunidades para melhorar o desempenho de sistemas de computação: com introdução de paralelismo ao nível da instrução (paralelismo desfasado, pipeline; ao nível dos dados, computação vetorial; paralelismo "real", VLIW e super-escalaridade) e no acesso à memória e sua hierarquização (interleaving, data-width, cache).
Aparecimento e evolução da arquitectura IA-32 nos processadores da Intel, do i4004 ao Skylake (Intel 64).
(Notas de estudo: novo conjunto de slides da série ISC,
ISC_5_short que poderá ser complementado com vários sites na Web a pesquisar a partir do Wikipedia; texto do enunciado do TPC5, cuja resolução deverá ser entregue no BB)

26-mar-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Introdução aos níveis de abstração dum computador, em ambiente laboratorial em Linux/IA-32, e respectivos mecanismos de conversão e análise  (gcc, objdump, gdb).

05-abr-21 (PL01, PL02, PL08, PL11)
Não houve aula: semana reservada às avaliações intercalares.

06-abr-21 (T)
Teste ensaio (Teste 1).

Semana 7

08-abr-21 (T11,T2)
Não houve aulas: semana reservada às avaliações intercalares.

09-abr-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Não houve aulas: semana reservada às avaliações intercalares.

12-abr-21 (PL01, PL02, PL08, PL11)
Introdução aos níveis de abstração dum computador, em ambiente laboratorial em Linux/IA-32, e respectivos mecanismos de conversão e análise  (gcc, objdump, gdb).

13-abr-21 (T1, T2)
Evolução das tecnologias e eficiência: do modelo Tick-Tock  de desenvolvimento de processadores da Intel ao novo modelo Process-Architecture-Optimization; evolução dos chips manycore da Intel, do SCC ao Xeon Phi Knights Corner; a concorrência da Intel nos PU-chips para servidores HPC (AMD Epyc, ARM V8, Sunway 26010, Huawei, PEZY-SC2, ...). Aceleradores de computação (DSP, GPU, NNP, FPGA).
(Notas  de estudo: versão estendida dos slides da aula anterior, ISC_5.)

Semana 

15-abr-21 (T1,T2)
Análise do nível ISA do IA-32 em Linux: introdução às propriedades das funções em C para análise do suporte requerido ao nível do ISA, incluindo o contexto na stack a ser construído.
(Notas de estudo: Bry (Ch 3.7),
primeiros 20 slides no ficheiro ISA_4 .
Texto do enunciado do TPC6, cuja resolução deverá ser entregue no BB; ficheiro TPC4r  com os resultados dos exercícios propostos.)

16-abr-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Resolução de exercícios do TPC5 (operações e acessos a operandos, e instruções de salto, do IA-32 em Linux).

19-abr-21 (PL01, PL02, PL08, PL11)
Resolução de exercícios do TPC5 (operações e acessos a operandos, e instruções de salto, do IA-32 em Linux).

20-abr-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: exemplo com análise detalhada da estrutura do código e dos contextos para suporte à invocação e regresso de procedimentos/funções em HLL (C em particular); análise da stack no caso de funções aninhadas e recursivas.
(Notas de estudo: Bry (Ch 3.7), restantes 20 slides no ficheiro ISA_4.)

Semana 9

22-abr-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: revisão dos modelos Intel 64 e RISC versus CISC; análise comparativa do modelo de implementação de funções numa arquitectura Intel 64 e em duas arquiteturas RISC (MIPS e ARM) versus IA-32.
(Notas de estudo: primeiros 17 slides de ISA_5 e Bry (Ch 3.8 e 3.9).
Texto do enunciado do TPC7, cuja resolução deverá ser entregue no BB; ficheiro TPC5r  com os resultados dos exercícios propostos.)

23-abr-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Análise laboratorial de código C compilado por ferramentas da GNU em Linux para o IA-32 (TPC6), contendo acesso a uma função e uma estrutura de controlo while (com utilização do depurador gdb).

26-abr-21 (PL01, PL02, PL08, PL11)
Análise laboratorial de código C compilado por ferramentas da GNU em Linux para o IA-32 (TPC6), contendo acesso a uma função e uma estrutura de controlo while (com utilização do depurador gdb).

27-abr-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: análise comparativa do modelo de implementação de funções numa arquitetura RISC (ARM) versus IA-32.
Análise do nível ISA do IA-32 em Linux: impacto da estruturação da informação numa HLL na execução desse código, organização em memória e métodos de acesso e manipulação de dados estruturados em C, com respectiva análise da codificação para assembly (arrays uni-dimensionais, vulgo vetores).

(Notas de estudo: restantes slides de slides de ISA_5 e primeiros slides de ISA_6.)
 

Semana 10

29-abr-21 (T1, T2)
Análise do nível ISA do IA-32 em Linux: organização em memória e métodos de acesso e manipulação de dados estruturados em C, com respectiva análise da codificação para assembly (arrays multi-dimensionais, structures e unions).
(Notas de estudo: Bry (Ch 3.7), e resto dos slides
ISA_6; Bry (Ch. 3.15, Ch. 5.1 a 5.6, Ch. 9.0 e 9.3); sugere-se a leitura de P&H (Ch2.2, e 2.3).
Texto do enunciado do TPC8, cuja resolução deverá ser entregue no BB; ficheiro TPC6r  com os resultados dos exercícios propostos.)

30-abr-21 (PL03, PL04, PL05, PL06, PL07, PL09,  PL10, PL12)
Análise laboratorial de código C compilado por ferramentas da GNU em Linux para o IA-32 (TPC7), contendo acesso a uma função e uma estrutura de controlo while (com utilização do depurador gdb).
(Notas de estudo: o manual de utilização do depurador disponibilizado pela GNU está em
Debugging with DBG , mas existe uma cópia local duma versão mais antiga em PDF aqui (2.04MB))

03-mai-21 (PL01, PL02, PL08, PL11)
Análise laboratorial de código C compilado por ferramentas da GNU em Linux para o IA-32 (TPC7), contendo acesso a uma função e uma estrutura de controlo while (com utilização do depurador gdb).
(Notas de estudo: o manual de utilização do depurador disponibilizado pela GNU está em
Debugging with DBG , mas existe uma cópia local duma versão mais antiga em PDF aqui (2.04MB))

04-mai-21 (T1, T2)
Avaliação de desempenho na execução de programas: objetivos e metodologias na avaliação de desempenho na execução de programas; potencialidades e limitações dos compiladores; análise de técnicas de otimização de código independentes da arquitetura do processador (code motion, strength reduction, partilha de sub-expressões); métrica de avaliação de desempenho de aplicações de processamento numérico de arrays, nomeadamente as componentes para o cálculo dos Ciclos Por Elemento (CPE); introdução do tipo de dados abstracto (ADT) e de um exemplo de operação com elementos de um array para se introduzir melhorias de eficiência.
(Notas de estudo:
slides  AvDes_1 e AvDes_2 (apenas foi coberta parte do material neste 2º conjunto de slides).
O tema Avaliação de Desempenho vem integral e detalhadamente descrito no Cap. 5 do livro Bry, incluindo os exemplos que se encontram nos slides; à semelhança das referências anteriores a capítulos e secções deste livro, a versão inicial do livro que está disponível em formato eletrónico descreve com bastante pormenor todo o conteúdo dos slides das aulas  teóricas, pelo que se recomenda a sua leitura).

Semana 11

06-mai-21 (T)
Avaliação de desempenho na execução de programas: estudo do exemplo combine e introdução de técnicas de otimização independentes da máquina; introdução aos fatores da arquitetura que maior impacto têm no desempenho, indispensável à compreensão das técnicas de otimização dependentes da máquina: pipeline, superescalaridade, hierarquia de memória; organização hierárquica da memória: o princípio da localidade, conceitos associados à cache e seu desempenho, regras de codificação orientada ao desempenho. 
(Notas de estudo: conclusão do material dos slides AvDes_2 e primeiros slides de AvDes_3.
Texto do enunciado do TPC9, cuja resolução deverá ser entregue no BB; ficheiro TPC7r com os resultados dos exercícios propostos.)

07-mai-21 (PL03, PL04)
Análise laboratorial do código C compilado por ferramentas da GNU em Linux para o IA-32 (TPC8), contendo acesso a função e a estrutura de controlo for, com utilização do depurador gdb.

10-mai-21 (PL01, PL02)
Análise laboratorial do código C compilado por ferramentas da GNU em Linux para o IA-32 (TPC8), contendo acesso a função e a estrutura de controlo for, com utilização do depurador gdb.

11-mai-21 (T)
Avaliação de desempenho na execução de programas: introdução à evolução das arquiteturas para modelos manycore; introdução ao modelo de representação de um par processador-memória (no Intel P6), com destaque para os modelos de representação do pipeline e da superescalaridade.
(Notas de estudo: os restantes slides de AvDes_3

Semana 12  

13-mai-21 (T)
Avaliação de desempenho na execução de programas:  análise de técnicas de otimização dependentes da máquina, nomeadamente loop unroll, com e sem  a introdução de paralelismo, e de hierarquia de memória; a análise do comportamento dum Intel P6 em operações iterativas.
(Notas de estudo: slides
AvDes_4.)

14-mai-21 (
PL03, PL04)
TPC9: execução em ambiente laboratorial de funções com deficiências (no IA-32 em Linux) e respectiva análise do código gerado pelo compilador.

17-mai-21 (PL01, PL02)
TPC9: execução em ambiente laboratorial de funções com deficiências (no IA-32 em Linux) e respectiva análise do código gerado pelo compilador.

18-mai-21 (T)
Outras técnicas de otimização de desempenho na execução de programas: técnicas já exploradas pelo gcc; papel dos profilers na análise de componentes de código e sua aplicação na caracterização das partes críticas de desempenho de código.
Apresentação e discussão da Lei de Amdahl.
(Notas de estudo: slides
AvDes_5.
Ficheiro TPC9r com os resultados dos exercícios propostos.)


Página mantida por aproenca <at> di.uminho.pt
Última Modificação:
22 Mai 2021