Logotipo e link para a Universidade do Minho

Sistemas de Computação
Mestr Integr Engª Informática, 1º ano
2019/2020
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 | 13 | 14

Última Modificação:04 Mar 2020

 

 

 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

03-fev-20 (T1, T2)
Metodologia de funcionamento da disciplina: princípios básicos, modo de funcionamento, elementos e modelos de avaliação (informação complementar em formato electrónico, e relativo ao ano em curso, em http://gec.di.uminho.pt/miei/sc/ (um alias de http://gec.di.uminho.pt/miei/sc1920/).
(Notas de estudo: cópia dos slides de apresentação (Capa.pdf).

03-fev-20 (PL2, PL3, PL8, PL9)
Não houve aula ainda.

05-fev-20 (T1, T2)
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: cópia dos slides de introdução à matéria (ISC_1_short); 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; enunciado do  TPC1, para ser entregue, impreterivelmente, até à hora de início da sessão PL da semana seguinte).

05-fev-20 (PL1, PL10)
Não houve aula ainda.

07-fev-20 (PL4, PL5, PL6, PL7)
Não houve aula ainda.

Semana 2

10-fev-20 (T1, T2)
Introdução à representação binária de valores positivos e negativos: sinal e amplitude, complemento para 1, complemento para 2, por excesso.

10-fev-20 (PL2, PL3, PL8, PL9)
Resolução de exercícios com binários inteiros.

12-fev-20 (T1, T2)
Representação binária de valores reais em vírgula flutuante: noção e vantagens duma normalização. 
(Notas de estudo: reforç
o dos slides da semana anterior (ISC_1_short2); enunciado do  TPC2, para ser entregue, impreterivelmente, até à hora de início da sessão PL seguinte)

12-fev-20 (PL1, PL10)
Resolução de exercícios com binários inteiros.

14-fev-20 (PL4, PL5, PL6, PL7)
Resolução de exercícios com binários inteiros.

Semana 3

17-fev-20 (T1, T2)
Representação binária de valores reais em vírgula flutuante: apresentação da norma IEEE 754 na representação de valores em vírgula flutuante. 
(Notas de estudo: os mesmos slides que a semana anterior (ISC_1_short2); ficheiro TPC1r com os resultados dos exercícios propostos em TPC1 )

17-fev-20 (PL2, PL3, PL8, PL9)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.

19-fev-20 (T1, T2)
Análise sucinta da estrutura interna dum computador elementar: estrutura e funções do processador (a unidade de controlo, o conjunto de registos e as unidades funcionais).
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_2-3 e texto ISC (Cap.2); referências complementares: Sta Ch1.1 e 1.2 Ch 3.1, 3.2; enunciado do TPC3, cuja resolução deverá ser entregue no início da sessão PL seguinte)

19-fev-20 (PL1, PL10)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.

21-fev-20 (PL4, PL5, PL6, PL7)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.

Semana 4

24-fev-20 (T1, T2)
Análise do processador ao nível da arquitectura 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 arquitecturas RISC e no IA-32), (iii) modos de acesso aos operandos (em arquitecturas 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 (em processadores RISC e no IA-32), (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 .
Ficheiro
TPC2r com os resultados dos exercícios propostos em TPC2 )

24-fev-20 (PL2, PL3, PL8, PL9)
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 com estudantes-atores: 8 atores representaram a execução de instruções em linguagem máquina (corpo de uma função em C compilada para IA-16).

26-fev-20 (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.
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) e respectivos mecanismos de conversão (compilação, assembly (montagem) e interpretação
; análise detalhada dos mecanismos na execução de um programa em C numa arquitectura IA-32.
(Notas de estudo: slides completos
 ISC_1 )

26-fev-20 (PL1, PL10)
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 com estudantes-atores: 8 atores representaram a execução de instruções em linguagem máquina (corpo de uma função em C compilada para IA-16).

28-fev-20 (PL4, PL5, PL6, PL7)
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 com estudantes-atores: 8 atores representaram a execução de instruções em linguagem máquina (corpo de uma função em C compilada para IA-16).

Semana 5

02-mar-20 (T1, T2)
Não houve aula.
(Notas de estudo: texto do enunciado do TPC4 (e respectivo guião laboratorial), cuja resolução deverá ser entregue no início da sessão PL da semana seguinte; ficheiro TPC3r_short  com os resultados dos exercícios propostos em TPC3).

02-mar-20 (PL2, PL3, PL8, PL9)
Continuação do exercício experimental da semana anterior.

04-mar-20 (T1, T2)
Análise do nível ISA do IA-32 em Linux: modelo da arquitectura ISA do IA-32 no desenvolvimento de programas, 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.
(Notas de estudo: slides
 ISA_1 e ISA_2 e o instruction set do IA-32 numa página A4.).
Notas adicionais para as sessões laboratoriais da próxima semana: (i) serão num dos Lab. Informática do GAE no CP2 (Piso 2), (ii) 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), (iii) os códigos de acesso ao servidor remoto foram já remetidos por email a todos os inscritos na UC, e (iv) disponibiliza-se
aqui uma introdução ao ambiente Unix.)

04-mar-20 (PL1, PL10)
Continuação do exercício experimental da semana anterior.

06-mar-20 (PL4, PL5, PL6, PL7)
Continuação do exercício experimental da semana anterior.

Semana 6

11-mar-20 (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 das estruturas de controlo  if-else, 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 slides
ISA_3 .
Texto do enunciado do
TPC5, cuja resolução deverá ser entregue no início da sessão PL da semana seguinte e que decorrerá como normalmente numa sala de aula e não no laboratório; ficheiro TPC3r  reformulado com o resultado do guião teatral.
Notas adicionais para as sessões laboratoriais desta semana: (i) serão num dos Lab. Informática do GAE no CP2 (Piso 2), (ii) 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 para saber como), (iii) os códigos de acesso ao servidor remoto foram já remetidos por email a todos os inscritos na UC, e (iv) disponibiliza-se
aqui uma introdução ao ambiente Unix.)

12-mar-20 (PL7, PL8, PL11, PL12)
Continuação do exercício experimental da sessão anterior.

13-mar-20 (PL5, PL6)
Introdução aos níveis de abstracção dum computador, em ambiente laboratorial em Linux/IA-32, e respectivos mecanismos de conversão e análise  (gcc, objdump, gdb).

15-mar-20 (PL1, PL2, PL3, PL4)
Introdução aos níveis de abstracção dum computador, em ambiente laboratorial em Linux/IA-32, e respectivos mecanismos de conversão e análise  (gcc, objdump, gdb).

Semana 7

18-mar-20 (T1, T2)
Não houve aulas: semana reservada às avaliações intercalares
das UCs do 1º ano
.

20-mar-20 (PL7, PL8, PL11, PL12)
Teste ensaio.

20-mar-20 (PL5, PL6)
Teste ensaio.

22-mar-20 (PL1, PL2, PL3, PL4)
Teste ensaio.

Semana

25-mar-20 (T1, T2)
Correção do teste.
Evolução das tecnologias e eficiência: caracterização das arquitecturas 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 que poderá ser complementado com vários sites na Web a pesquisar a partir do Wikipedia.
Texto do enunciado do
TPC6, cuja resolução deverá ser entregue no início da sessão PL da semana seguinte e que decorrerá de novo no laboratório; ficheiro TPC4r  com os resultados dos exercícios propostos.)

26-mar-20 (PL7, PL8, PL11, PL12)
Introdução aos níveis de abstracção dum computador, em ambiente laboratorial em Linux/IA-32, e respectivos mecanismos de conversão e análise  (gcc, objdump, gdb).

27-mar-20 (PL5, PL6)
Resolução de exercícios do TPC5 (operações e acessos a operandos, e instruções de salto, do IA-32 em Linux).

29-mar-20 (PL1, PL2, PL3, PL4)
Resolução de exercícios do TPC5 (operações e acessos a operandos, e instruções de salto, do IA-32 em Linux).

Semana 9

01-abr-20 (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), slides
ISA_4 .
Texto do enunciado do
TPC7, cuja resolução deverá ser entregue no início da sessão PL da semana seguinte e que decorrerá de novo no laboratório; ficheiro TPC5r  com os resultados dos exercícios propostos.)

02-abr-20 (PL7, PL8, PL11, PL12)
Resolução de exercícios do TPC5 (operações e acessos a operandos, e instruções de salto, do IA-32 em Linux).

03-abr-20 (PL5, PL6)
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).

05-abr-20 (PL1, PL2, PL3, PL4)
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).

Semana 10

08-abr-20 (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.
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).
(Notas de estudo: Bry (Ch 3.7), mesmos slides que da aula anterior e um subconjunto desses slides, com animações,
em PowerPoint; 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); e slides  AvDes_1 e AvDes_2 (apenas foi coberta parte do meterial).
Texto do enunciado do
TPC8, cuja resolução deverá ser entregue no início da sessão PL da semana seguinte e que decorrerá no laboratório; ficheiro TPC6r  com os resultados dos exercícios propostos.)

09-abr-20 (PL7, PL8, PL11, 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).

10-abr-20 (PL5, PL6)
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))

12-abr-20 (PL1, PL2, PL3, PL4)
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))

Semana 11

22-abr-20 (T1, T2)
Não houve aula (tolerância de ponto, Pascoela)

23-abr-20 (PL1, PL2, PL3, PL4, PL6, PL5)
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))

24-abr-20 (PL5, PL6)
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.

26-abr-20 (PL1, PL2, PL3, PL4)
Não houve aula para compensar os feriados dos turnos de terça (Carnaval, 5-mar-20) e de quarta (1-mai-20).

Semana 12  

29-abr-20 (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.
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, arrays multi-dimensionais, structures e unions).
Avaliação de desempenho na execução de programas: 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 conceito ADT e de um exemplo de operação com elementos de um array para se introduzir melhorias de eficiência.
(Notas de estudo: slides
, ISA_5 e Bry (Ch 3.8 e 3.9); slides ISA_6; sobre a avaliação de desempenho concluiu-se a apresentação dos slides da sessão anterior.
Texto do enunciado do
TPC9, cuja resolução deverá ser entregue no início da sessão PL da semana seguinte e que decorrerá no laboratório; ficheiros TPC7r  e TPC8r com os resultados dos exercícios propostos.)

30-abr-20 (PL1, PL2, PL3, PL4, PL6, PL5)
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.

01-mai-20 (PL5, PL6)
Feriado.

03-mai-20 (PL1, PL2, PL3, PL4)
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.

Semana 13  

06-mai-20 (T1, T2)
Avaliação de desempenho na execução de programas: 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; 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. 
Avaliação de desempenho na execução de programas: análise de técnicas de otimização dependentes da máquina, nomeadamente loop unroll e com a introdução de paralelismo e de hierarquia de memória; a análise do comportamento dum Intel P6 em operações iterativas.
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: Bry (Ch.  5.8, 5.10, 5.11, 5.14, 5.15, 6.4 e 6.5; Ch. 9) e  slides
AvDes_3 e AvDes_4.
Ficheiro
TPC9r com os resultados dos exercícios propostos.)

07-mai-20 (PL1, PL2, PL3, PL4, PL6, PL5)
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.

08-mai-20 (PL5, PL6)
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.

10-mai-20 (PL1, PL2, PL3, PL4)
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.

Semana 14 (Semana do Enterro da Gata)

13-mai-20 (T1, T2)
Não houve aula (de acordo com o calendário escolar da EEUM).

14-mai-20 (PL1, PL2, PL3, PL4, PL6, PL5)
Não houve aula (de acordo com o calendário escolar da EEUM).

15-mai-20 (PL5, PL6)
Não houve aula (de acordo com o calendário escolar da EEUM).

17-mai-20 (PL1, PL2, PL3, PL4)
Não houve aula (de acordo com o calendário escolar da EEUM).


Página mantida por aproenca <at> di.uminho.pt
Última Modificação:
04 Mar 2020