![]() |
Sistemas de Computação |
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 e
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).
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.
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).
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 8
25-mar-19
(T1, T2)
Correção do teste.
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).