![]() |
Sistemas de Computação |
Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15
Ultima Modificação:28 Mai 2022
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
14-fev-22 (T)
Metodologia de funcionamento da disciplina com
análise ao website da UC (em
http://gec.di.uminho.pt/lcc/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)
15-fev-22 (T)
Representação da informação no computador: 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 disponibilizados na aula anterior; enunciado do
TPC1, cuja resolução deverá
ser entregue, impreterivelmente, até à hora de início da
próxima sessão PL)
16-fev-22 (PL1+PL3)
Não houve aula ainda.
17-fev-22 (PL2+PL4)
Não houve aula ainda.
Semana 2
21-fev-22 (T)
Representação da informação no computador (cont.): representação binária de
valores reais em vírgula flutuante (noção e vantagens duma
normalização) e apresentação da norma IEEE 754 na representação de
valores em vírgula flutuante; representação de textos e respetivos alfabetos
(análise dos códigos Baudot, ASCII 7/8 bits e UNICODE);
codificação de informação audiovisual com introdução a técnicas de
compactação; codificação de comandos para execução num processador.
(Notas de estudo: versão estendida dos slides anteriores,
ISC_1 e texto
de introdução a ISC (apenas Cap.1); complementar: Sta
(Ch 8.4)).
22-fev-22 (T)
Estrutura interna dum computador:
estrutura e funções do processador (a unidade de controlo, o conjunto
de registos e as unidades funcionais), a organização da memória (noção
de endereço e de célula) e o sistema de interligação (conjunto de
sinais em cada módulo, PU, memória, I/O).
Interligação de componentes num computador: interacções entre componentes,
análise de ligações - da PU, da memória primária e dos módulos de I/O - e caracterização das
estruturas de ligação, com destaque para os barramentos (bus) e para a arquitetura típica de
um laptop.
(Notas de estudo: cópia dos
slides ISC_2 ; Cap. 2 do texto ISC
disponibilizado no sumário da aula anterior; complementar: Sta (Ch
3.1, 3.2); enunciado do TPC2,
cuja resolução deverá ser entregue no início da sessão PL da semana seguinte).
23-fev-22 (PL1+PL3)
Resolução de exercícios com
binários inteiros.
24-fev-22 (PL2+PL4)
Resolução de exercícios com
binários inteiros.
Semana 3
28-fev-22 (T)
Introdução aos níveis de abstração presentes num computador (o nível HLL, o nível da linguagem
assembly e o da linguagem máquina) e
respetivos 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 arquitetura IA32.
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 actualizaçã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: Cap. 3, 4.1 e 4.2 do texto ISC e slides
ISC_3 ;
complementar: Sta (Ch 3.2); ficheiro
TPC1r com os
resultados dos exercícios propostos em TPC1)
01-mar-22 (T)
(Carnaval, conteúdo lecionado em extensões de outras
aulas teóricas)
Análise do funcionamento dum processador ao nível da arquitetura do
instruction set ISA): 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); modos de acesso
aos operandos (em arquiteturas RISC e no IA32); registos visíveis ao programador (em arquiteturas
RISC e no IA-32); 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); análise de formatos de instruções (em processadores IA-32, RISC/MIPS e ARM); instruções de input/output; ordenação de
escalares multi-bytes na memória (little-endian, big-endian).
(Notas de estudo: slides
ISC_4; Cap. 4.3 a 4.5, 5.1 a 5.3 e 5.7 do
texto ISC; Ch.1.5 e 1.6 do livro CSAPP (Bry); a bibliografia de base desta e das próximas aulas sobre o
nível ISA segue quase exclusivamente o livro CSAPP (Bry), 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.51 MiB); enunciado do TPC3 (e respectivo guião teatral), cuja
resolução deverá ser entregue no início da sessão PL da semana seguinte)
02-mar-22 (PL1+PL3)
Análise crítica da resolução
de exercícios com valores em vírgula flutuante.
(Notas de estudo: ficheiro TPC2r com os
resultados dos exercícios propostos em TPC2 )
03-mar-22 (PL2+PL4)
Análise crítica da resolução
de exercícios com valores em vírgula flutuante.
(Notas de estudo: ficheiro TPC2r com os
resultados dos exercícios propostos em TPC2 )
Semana 4
07-mar-22 (T)
Análise do nível ISA do IA-32
em Linux: evolução da arquitetura IA-32 e modelo de desenvolvimento de programas.
(Notas de estudo: slides
ISA_1)
08-mar-22 (T)
Análise
do nível ISA do IA32 em Linux (cont.): análise das instruções mais
comuns para transferência de informação, e para execução de operações
aritméticas/lógicas
(Notas de estudo: slides
ISA_2;
Ch 3.5 do liivro Bry )
09-mar-22 (PL1+PL3)
Debate com resolução dos exercícios propostos no TPC3, como preparação para
a sessão experimental baseada numa representação teatral.
(Notas de estudo: incluídas no enunciado do TPC3, tal como o texto do
guião teatral para a próxima aula)
10-mar-22 (PL2+PL4)
Debate com resolução dos exercícios propostos no TPC3, como preparação para
a sessão experimental baseada numa representação teatral.
(Notas de estudo: incluídas no enunciado do TPC3, tal como o texto do
guião teatral para a próxima aula)
14-mar-22 (T)
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 de
estruturas de controlo presentes em C: if-else
(Notas de estudo: Bry (Ch 3.6) e slides
ISA_3 ;
enunciado do
TPC4,
com guião laboratorial incluído, cuja resolução dos exercícios propostos deverá
ser entregue até à hora de início da sessão PL da semana seguinte)
15-mar-22 (T)
Análise do nível ISA do IA-32 em Linux (cont):
técnicas de codificação de
estruturas de controlo presentes em C: do-while,
while,
for, switch;
introdução às propriedades das funções em C para análise do suporte
requerido ao nível do ISA.
(Notas de estudo: os mesmos que da aula anterior)
16-mar-22 (PL1+PL3)
Treino das capacidades de visualização de
conceitos sobre sistemas de computação, através de um exercício experimental com
estudantes-actores: 8 actores irão representar a execução de instruções em
linguagem máquina (corpo de uma função em C compilada para IA-16).
(Notas de estudo: o texto do guião teatral foi divulgado com o TPC3)
17-mar-22 (PL2+PL4)
Treino das capacidades de visualização de
conceitos sobre sistemas de computação, através de um exercício experimental com
estudantes-actores: 8 actores irão representar a execução de instruções em
linguagem máquina (corpo de uma função em C compilada para IA1-6).
(Notas de estudo: o texto do
guião teatral foi divulgado com o TPC3)
21-mar-22 (T)
Análise do nível ISA do IA-32 em Linux: análise detalhada da
estrutura do código e dos contextos para suporte à invocação de
procedimentos/funções em HLL (C em particular), com um
exemplo ilustrativo; análise da
stack no caso de funções aninhadas e recursivas.
(Notas de estudo: Bry (Ch 3.7) e slides
ISA_4
; exercícios resolvidos do
TPC3r ; enunciado do
TPC5,
cuja resolução deverá ser entregue no início da sessão
PL seguinte)
22-mar-22 (T)
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 uni-dimensionais e multi-dimensionais).
(Notas de estudo: Bry (Ch 3.8) e primeiro conjunto de slides em
ISA_6 )
23-mar-22 (PL1+PL3)
Introdução aos níveis de
abstracção dum computador, em ambiente laboratorial em Linux/IA32, e
respectivos mecanismos de conversão e análise
(gcc,
objdump,
gdb).
24-mar-22 (PL2+PL4)
Introdução aos níveis de
abstracção dum computador, em ambiente laboratorial em Linux/IA32, e
respectivos mecanismos de conversão e análise
(gcc,
objdump,
gdb).
Semana 7
28-mar-22 (T)
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: versão reduzida de slides da série ISC,
ISC_5 que poderá ser
complementado com vários sites na Web a pesquisar a partir do Wikipedia);
exercícios resolvidos do TPC4r; enunciado do
TPC6,
cuja resolução deverá ser entregue no início da sessão
PL seguinte)
29-mar-22 (T)
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
v
(Notas
de estudo: versão estendida dos slides da aula anterior,
ISC_5 )
30-mar-22 (PL1+PL3)
Resolução de alguns exercícios do TPC5 (operações e
acessos a operandos, e instruções de salto, do IA32 em Linux).
31-mar-22 (PL2+PL4)
Resolução de alguns exercícios do TPC5 (operações e
acessos a operandos, e instruções de salto, do IA32 em Linux).
Semana 8
04-abr-22 (T)
Análise do nível ISA do IA-32 em Linux:
métodos de acesso e manipulação de dados
estruturados em C, com respectiva análise da codificação para assembly
(structures).
(Notas de estudo : Bry (Ch 3.9)
e restantes slides em
ISA_6 );
exercícios resolvidos do TPC5r;
enunciado do
TPC7,
cuja resolução deverá ser entregue no início da sessão
PL seguinte)
05-abr-22 (T)
Revisão da matéria fundamental com resolução de um teste-ensaio.
(Notas de estudo: slides com o teste-ensaio;
encontra-se ainda disponível mais um teste modelo
representativo do tipo de questões a surgir numa prova PF e respectivo grau de
dificuldade (todas as questões têm a mesma pontuação e a prova está dimensionada
parra ser resolvida em 60min;
exercícios resolvidos do TPC6r )
06-abr-22 (PL1+PL3)
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).
(Notas de estudo: o manual de
utilização do depurador disponibilizado pela GNU está em
Debugging
with DBG , mas existe
uma cópia local da versão em PDF
aqui (2.04MB); J. Clark na Univ. Nebraska disponibiliza um pequeno
tutorial de
introdução ao GDB, que recomendo)
07-abr-22 (PL2+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).
(Notas de estudo: o manual de
utilização do depurador disponibilizado pela GNU está em
Debugging
with DBG , mas existe
uma cópia local da versão em PDF
aqui (2.04MB); J. Clark na Univ. Nebraska disponibiliza um pequeno
tutorial de
introdução ao GDB, que recomendo)
Semana 9 (Semana reservada para avaliações)
20-abr-22 (T+PL1+PL2+PL3+PL4)
1º teste
Semana 10
25-abr-22 (T)
Feriado
26-abr-22 (T)
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 arquitetura Intel 64 versus IA-32.
(Notas de estudo: 1ª parte dos slides de
ISA_5
; enunciado do
TPC8, com guião laboratorial incluído,
cuja resolução deverá ser entregue até à hora de início da sessão PL
seguinte)
27-abr-22 (PL1+PL3)
Análise laboratorial de código
C compilado por ferramentas da GNU em Linux para o IA32 (TPC7), contendo
acesso a uma função e uma estrutura de controlo
for (com utilização do depurador
gdb).
28-abr-22 (PL2+PL4)
Análise laboratorial de código
C compilado por ferramentas da GNU em Linux para o IA32 (TPC7), contendo
acesso a uma função e uma estrutura de controlo
for (com utilização do depurador
gdb).
Semana 11
2-mai-22 (T)
Análise do nível ISA do IA-32 em Linux: análise comparativa do modelo de implementação de funções
em arquiteturas RISC (MIPS e ARM) versus IA-32.
Avaliação de desempenho na
execução de programas: objectivos e
metodologias.
Objectivos: (i) construção/
avaliação do desempenho de computadores -
introdução às métricas e relação da expressão de cálculo
do CPUtime para um dado programa, com
factores da arquitectura que
influenciam o seu desempenho; (ii) melhorar o desempenho da execução de
programas - introdução às técnicas de optimização
(independente/dependente
da máquina) e de medição (microscópica e macroscópica).
Metodologias: de optimização independente da máquina (code motion,
strength
reduction, partilha de sub-expressões), e de medição (escalas
temporais,
utilização de contadores de ciclos com extensões ASM em C).
(Notas de estudo: resto dos slides de
ISA_5;
slides AvDes_1 e 1ª parte de
AvDes_2; Bry (Ch.
3.15, Ch. 5.1 a 5.3; detalhes sobre técnicas de medição de tempos de execução de
código em Ch. 9.0 e 9.3); sugere-se ainda a leitura de P&H
(Ch2.2, e 2.3), resumido
aqui, para uma melhor
compreensão das métricas orientadas à construção/avaliação do
desempenho de computadores); exercícios resolvidos do
TPC7r
;
enunciado do
TPC9, com guião laboratorial incluído,
cuja resolução deverá ser entregue até à hora de início da sessão PL
seguinte)
03-mai-22 (T)
Avaliação de desempenho na execução de programas: aprofundamento da
análise
de algumas técnicas de optimização independentes da máquina, com
discussão de
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).
(Notas de estudo: Bry (Ch. 5.3 a 5.6); o resto dos slides da aula
anterior, AvDes_2 )
04-mai-22 (PL1+PL3)
Execução de funções com deficiências (no IA32 em Linux,
TPC8), e respectiva
análise do código gerado pelo compilador (em ambiente laboratorial).
05-mai-22 (PL2+PL4)
Execução de funções com deficiências (no IA32 em Linux,
TPC8), e respectiva
análise do código gerado pelo compilador (em ambiente laboratorial).
Semana 12
09-mai-22 (T)
Não houve aula, pelas atividades
relativas à semana do "enterro da gata" (para manter consistência com as 2
UCs a funcionarem em simultâneo).
10-mai-22 (T)
Não houve aula, pelas atividades
relativas à semana do "enterro da gata" (para manter consistência com as 2
UCs a funcionarem em simultâneo).
11-mai-22 (PL1+PL3)
Não houve aula, pelas atividades
relativas à semana do "enterro da gata" (para manter consistência com as 2
UCs a funcionarem em simultâneo).
12-mai-22 (PL2+PL4)
Não houve aula, pelas atividades
relativas à semana do "enterro da gata" (para manter consistência com as 2
UCs a funcionarem em simultâneo).
Semana 13
16-mai-22 (T)
Avaliação
de desempenho na execução de programas: introdução aos factores da
arquitectura que maior impacto têm no desempenho (pipeline, superescalaridade,
hierarquia de memória), indispensável à compreensão das técnicas de optimização
dependentes da máquina.
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: Bry (Ch.
5.7) e parte inicial dos slides AvDes_3;
exercícios
resolvidos do
TPC8r
)
17-mai-22 (T)
Avaliação de desempenho na execução de programas: introdução ao modelo de
representação de um par processador-memória (chip do Pentium III), com
destaque para os modelos de representação do pipeline e da superescalaridade.
(Notas de estudo: Bry (Ch.
5.7) e parte restante dos slides AvDes_3 )
18-mai-22 (PL1+PL3)
Challenge: utilização de técnicas de desmontagem de código C (no IA32
em Linux) para extração de informação relevante (TPC9 em ambiente laboratorial).
19-mai-22 (PL2+PL4)
Challenge: utilização de técnicas de desmontagem de código C (no IA32
em Linux) para extração de informação relevante (TPC9 em ambiente laboratorial).
Semana 14
23-mai-22 (T)
Avaliação de desempenho na execução de
programas: análise de
técnicas de optimização dependentes da máquina, nomeadamente a análise
do comportamento dum Pentium em operações iterativas e respectivas
consequências - loop
unroll e com a introdução de paralelismo e de hierarquia de
memória.
(Notas de estudo: Bry (Ch.
5.8, 5.10, 5.11, 5.14, 5.15); slides AvDes_4;
exercícios
resolvidos do
TPC9r
)
24-mai-22 (T)
Outras
técnicas de optimização de desempenho na execução de programas: análise
de técnicas usadas pelo GCC; uso de program profilers na identificação dos gargalos de
desempenho; análise da lei de Amdahl e do impacto dos acessos à memória
no desempenho.
(Notas de estudo: Bry (Ch.
5.8, 5.10, 5.11, 5.14, 5.15); slides AvDes_5)
25-mai-22 (PL1+PL3)
Revisão de matéria lecionada e preparação para o teste final.
Análise crítica do funcionamento da UC.
26-mai-22 (PL2+PL4)
Revisão de matéria lecionada e preparação para o teste final.
Análise crítica do funcionamento da UC.
Semana 15 (Semana reservada para avaliações)
02-jun-22 (T, PL1,
PL2)
Teste