Logotipo e link para a Universidade do Minho

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

 

 

 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

04-fev-19 (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/).
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 apresentação (Capa.pdf) e 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-19 (PL7, PL8, PL11, PL12)
Não houve aula ainda.

06-fev-19 (PL5, PL6)
Não houve aula ainda.

08-fev-19 (PL1, PL2, PL3, PL4)
Não houve aula ainda.

Semana 2

11-fev-19 (T1, T2)
Introdução à representação binária de valores positivos e negativos: sinal e amplitude, complemento para 1, complemento para 2, por excesso.
Representação binária de valores reais em vírgula flutuante: noção e vantagens duma normalização. 
(Notas de estudo: slides ISC_1; enunciado do 
TPC2, para ser entregue, impreterivelmente, até à hora de início da sessão PL seguinte)

12-fev-19 (PL7, PL8, PL11, PL12)
Resolução de exercícios com binários inteiros.

13-fev-19 (PL5, PL6)
Resolução de exercícios com binários inteiros.

15-fev-19 (PL1, PL2, PL3, PL4)
Resolução de exercícios com binários inteiros.

Semana 3

18-fev-19 (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. 
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: estrutura e funções do processador (a unidade de controlo, o conjunto de registos e as unidades funcionais).
Estrutura interna dum computador: estrutura e funções do processador (a unidade de controlo, o conjunto de registos e as unidades funcionais). Estrutura típica dum computador antigo e recente.
(Notas de estudo: slides
ISC_2 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; ficheiro TPC1r com os resultados dos exercícios propostos em TPC1)

19-fev-19 (PL7, PL8, PL11, PL12)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.
Análise de exemplo de execução duma instrução num par processador-memória, como introdução ao guião teatral da sessão experimental da semana seguinte, baseada numa representação teatral.

20-fev-19 (PL5, PL6)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.
Análise de exemplo de execução duma instrução num par processador-memória, como introdução ao guião teatral da sessão experimental da semana seguinte, baseada numa representação teatral.

22-fev-19 (PL1, PL2, PL3, PL4)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.
Análise de exemplo de execução duma instrução num par processador-memória, como introdução ao guião teatral da sessão experimental da semana seguinte, baseada numa representação teatral.

Semana 4

25-fev-19 (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) 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.
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).
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_3 , ISC_4 ,
Ficheiro
TPC2r com os resultados dos exercícios propostos em TPC2 )

26-fev-19 (PL7, PL8, PL11, PL12)
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).

27-fev-19 (PL5, PL6)
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).

01-mar-19 (PL1, PL2, PL3, PL4)
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

04-mar-19 (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.
T
exto 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).

05-mar-19 (PL7, PL8, PL11, PL12)
Terça-feira de Carnaval: não houve aula.
A matéria desta semana será lecionada na semana seguinte e haverá de novo equilíbrio entre as turmas todas na semana após a Páscoa.

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

08-mar-19 (PL1, PL2, PL3, PL4)
Continuação do exercício experimental da semana anterior.

Semana 6

11-mar-19 (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-19 (PL7, PL8, PL11, PL12)
Continuação do exercício experimental da sessão anterior.

13-mar-19 (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-19 (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-19 (T1, T2)
Não houve aulas: semana reservada às avaliações intercalares
das UCs do 1º ano.

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

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

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

Semana

25-mar-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (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-19 (T1, T2)
Não houve aula (tolerância de ponto, Pascoela)

23-abr-19 (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-19 (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-19 (PL1, PL2, PL3, PL4)
Não houve aula para compensar os feriados dos turnos de terça (Carnaval, 5-mar-19) e de quarta (1-mai-19).

Semana 12  

29-abr-19 (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-19 (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-19 (PL5, PL6)
Feriado.

03-mai-19 (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-19 (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-19 (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-19 (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-19 (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-19 (T1, T2)
Não houve aula (de acordo com o calendário escolar da EEUM).

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

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

17-mai-19 (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:
13 Mai 2019