![]() |
Sistemas de Computação |
Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
Ultima Modificação: 24 Jul 2007
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), Bry (livro/resumo de Bryant), ISC (Introdução aos Sistemas de Computação, notas de estudo), P&H (livro de Patterson & Hennessy ), e Tan (livro de Tanenbaum); são normalmente seguidas do respectivo capítulo/secção, e quando existe em formato electrónico é indicado o respectivo link.
Semana 1
21-Fev-07 (TP3)
Não houve aula para equilibrar com as restantes turmas.
21-Fev-07 (T)
Metodologia de
funcionamento da disciplina: princípios básicos, objectivos de formação, resultados
da aprendizagem, modo de funcionamento, elementos e modelos de avaliação,
informação complementar
(em formato electrónico, e relativo ao ano em
curso, em
gec.di.uminho.pt/lcc/sc/).
(Slides apresentados: IntroAC )
23-Fev-07 (T)
Não houve aula (pb's de saúde com familiar).
Semana 2
27-Fev-07 (TP1+TP2)
Sistemas de numeração e conversão de bases. Representação binária
de valores positivos e negativos (sinal e amplitude, complemento para 1, complemento para
2, e representação por excesso).
(Notas de estudo: texto
ISC
(Anexo A); complementar: Sta
(Ch
8.2, 8.3), Tan (Annex A); enunciado do TPC1, para ser entregue, impreterivelmente,
até à hora de início da sessão TP seguinte).
28-Fev-07 (TP3)
Sistemas de numeração e conversão de bases. Representação binária
de valores positivos e negativos (sinal e amplitude, complemento para 1, complemento para
2, e representação por excesso).
(Notas de estudo: texto
ISC
(Anexo A); complementar: Sta
(Ch
8.2, 8.3), Tan (Annex A); enunciado do TPC1, para ser entregue, impreterivelmente,
até à hora de início da sessão TP seguinte).
28-Fev-07 (T)
Introdução aos conceitos de "computador" e de "informação" no contexto de um computador.
Representação da informação no computador utilizando números binários (bits):
texto (ASCII), números
(referência a inteiros e reais) e comandos para o processador (noção de instruction
set).
(Notas de estudo: cópia dos slides
ISC_1 e
texto ISC
(Cap.1); complementar: Sta (Ch1.1
e 1.2) ).
02-Mar-07 (T)
Não houve aula (cerimónia protocolar da assinatura do acordo Portugal-UTA).
Semana 3
06-Mar-07 (TP1+TP2)
Resolução de exercícios com binários inteiros.
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.
(Notas de estudo: texto
ISC
(Anexo B); complementar: Sta
(Ch8.4), Tan (Annex
B); ficheiro
TPC1r com os resultados dos
exercícios propostos em TPC1; enunciado do
TPC2,
cuja resolução deverá ser entregue,no início da sessão TP seguinte; recomenda-se a ainda uma leitura sobre a
história
do IEEE 754, bem como uma visita ao
site oficial da norma IEEE 754).
07-Mar-07 (TP3)
Resolução de exercícios com binários inteiros.
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.
(Notas de estudo: texto
ISC
(Anexo B); complementar: Sta
(Ch8.4), Tan (Annex
B); ficheiro
TPC1r com os resultados dos
exercícios propostos em TPC1; enunciado do
TPC2,
cuja resolução deverá ser entregue no início da sessão TP seguinte; recomenda-se a ainda uma leitura sobre a
história
do IEEE 754, bem como uma visita ao
site oficial da norma IEEE 754).
07-Mar-07 (T)
Representação da informação no computador (cont.):
texto e respectivos 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;
formatos de representação de textos em ficheiros de documentos.
09-Mar-07 (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, CPU, memória, I/O).
Interligação de componentes num computador: interacções entre componentes,
análise de ligações - do CPU, 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 arquitectura típica de um PC.
(Notas de estudo: cópia dos slides
ISC_2 e texto ISC
(Cap. 2);
complementar: Sta (Ch
3.1, 3.2) ).
Semana 4
13-Mar-07 (TP1+TP2)
Análise crítica da resolução de exercícios com valores em
vírgula flutuante.
(Notas de estudo: texto do enunciado do TPC3 (e
respectivo guião teatral), cuja resolução deverá ser entregue no início da
sessão TP seguinte; ficheiro
TPC2r
com os resultados dos exercícios propostos em TPC2).
14-Mar-07 (TP3)
Análise crítica da resolução de exercícios com valores em
vírgula flutuante.
(Notas de estudo: texto do enunciado do TPC3 (e
respectivo guião teatral), cuja resolução deverá ser entregue no início da
sessão TP seguinte; ficheiro
TPC2r
com os resultados dos exercícios propostos em TPC2).
14-Mar-07 (T)
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 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: texto
ISC (Cap. 3, 4.1 e 4.2) e
slides
ISC_3 ; complementar:
Sta (Ch
3.2) )
16-Mar-07 (T)
Análise do funcionamento dum processador ao nível da
arquitectura do instruction set:
(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 IA32),
e (iii) modos de acesso aos operandos (em arquitecturas RISC e no IA32).
(Notas de estudo: ISC (Cap. 5.1 e 5.2) e slides
ISC_4 ; recomenda-se ainda a leitura dos slides
ISC_5, relativo a comunicação de
dados e redes, elaborados essencialmente com base no livro "Introdução às
Tecnologias de Informação. Bloco II", de Artur A. Azul, Porto Editora, 2005
(Cap. 6.1))
Semana 5
20-Mar-07 (TP1+TP2)
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
IA16).
(Notas de estudo: o texto do
guião teatral para apoio à elaboração deste exercício
foi divulgado no sumário da aula anterior)
21-Mar-07 (TP3)
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
IA16).
(Notas de estudo: o texto do
guião teatral para apoio à elaboração deste exercício
foi divulgado no sumário da aula anterior)
21-Mar-07 (T)
Análise
do processador ao nível da arquitectura do instruction set
(ISA): 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 RISC e no Pentium); instruções de input/output; ordenação de bytes numa palavra (little-endian, big-endian).
(Notas de estudo: ISC (Cap. 4.3 a 4.5,
5,2, 5.3 e 5.7), Bry (Ch.1.5 e 1.6); slides ISC_4, já disponibilizados;
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 TP da semana seguinte)
21-Mar-07 (T+TP1+TP2+TP3)
(sessão extra, para ficha de avaliação)
Ficha de avaliação 1.
23-Mar-07 (T)
Introdução de paralelismo no CPU: noção de pipeline e
de superescalaridade.
Introdução aos conceitos de hierarquia de memória e de cache.
Resumo das características das arquitecturas RISC.
(Notas de estudo: ISC
(Cap. 4.3 a 4.5), slides
ISC_4, já disponibilizados.)
Semana 6
27-Mar-07 (TP1+TP2)
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).
(Notas de estudo: exercícios resolvidos do TPC3r
; o texto do guião laboratorial foi divulgado com o enunciado do TPC4, na semana
anterior; para a semana seguinte não esquecer da Fase 1 do Projecto Integrado; o
enunciado do TPC para a outra semana será divulgado a 11-Abr-07)
28-Mar-07 (TP3)
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).
(Notas de estudo: exercícios resolvidos do TPC3r
; o texto do guião laboratorial foi divulgado com o enunciado do TPC4, na semana
anterior; para a semana seguinte não esquecer da Fase 1 do Projecto Integrado; o
enunciado do TPC para a outra semana será divulgado a 11-Abr-07)
28-Mar-07 (T)
Análise do nível ISA do IA32 em Linux: modelo de
desenvolvimento de programas.
(Notas de estudo: a bibliografia de base desta e das 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.51MB; slides
ISA_1 )
30-Mar-07 (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: foram usados os slides disponibilizados na aula anterior)
**************** Férias da Páscoa **********************
Semana 7
11-Abr-07 (TP3)
Não houve aula para
equilibrar com as outras turmas.
11-Abr-07 (T)
Análise do nível ISA do
IA32 em Linux (cont.):
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).
(Notas de estudo: Bry (Ch 3.6), slides
disponibilizados anteriormente e slides
ISA_2 ; disponibiliza-se ainda uma resolução escrita do
TPC4r
e respectivo guião experimental)
13-Abr-07 (T)
Análise do nível ISA do IA-32 em Linux:
técnicas de codificação
de estruturas de controlo presentes em C: if-else, do-while,
while .
(Notas de estudo: os mesmos que da aula anterior; texto do enunciado do
TPC5, cuja resolução deverá ser entregue no
início da sessão TP da semana seguinte)
Semana 8
17-Abr-07 (TP1+TP2)
Resolução do TPC5 (operações e acessos a operandos, e instruções de salto, do IA32 em Linux), em
ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do
TPC5r ; enunciado do
TPC6,
com guião laboratorial incluído, cuja resolução deverá ser entregue até à hora de início da sessão TP seguinte)
18-Abr-07 (TP3)
Resolução do TPC5 (operações e acessos a operandos, e instruções de salto, do IA32 em Linux), em
ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do TPC5r ; enunciado do
TPC6,
com guião laboratorial incluído, cuja resolução deverá ser entregue até à hora
de início da sessão TP seguinte)
18-Abr-07 (T)
Análise do nível ISA do IA-32 em Linux:
conclusão das técnicas de codificação
de estruturas de controlo presentes em C (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: Bry (Ch 3.7)
e slides
ISA_3 )
20-Abr-07 (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).
(Notas de estudo: mesmas que da aula anterior, e com um subconjunto desses slides, com animações,
em PowerPoint )
20-Abr-07 (TP3)
(sessão extra, por antecipação da sessão de 02-Mai-07)
Análise laboratorial do código C compilado por ferramentas
da Gnu em Linux para o IA32, contendo acesso a função e a 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
(1.64MB);
J. Clark na Univ. Nebraska disponibiliza um pequeno
tutorial de introdução
ao GDB que recomendo; exercícios resolvidos do
TPC6r ; enunciado do
TPC7,
com guião laboratorial incluído, cuja resolução deverá ser entregue até à hora
de início da sessão TP seguinte)
Semana 9
24-Abr-07 (TP1+TP2)
Análise laboratorial do código C compilado por ferramentas
da GNU em Linux para o IA32, contendo acesso a função e a 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
(1.64MB);
J. Clark na Univ. Nebraska disponibiliza um pequeno
tutorial de introdução
ao GDB que recomendo; exercícios resolvidos do
TPC6r ; enunciado do
TPC7,
com guião laboratorial incluído, cuja resolução deverá ser entregue até à hora
de início da sessão TP seguinte)
25-Abr-07 (TP3)
Feriado.
25-Abr-07 (T)
Feriado.
27-Abr-07 (T)
Não houve aula (compensada pela sessão extra da Ficha de Avaliação 1)
Semana 10
01-Mai-07 (TP1+TP2)
Feriado.
02-Mai-07 (TP3)
Não houve aula (compensada
por sessão extra a 20-Abr-07)
02-Mai-07 (T)
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 de procedimentos/funções em HLL;
análise da stack no caso de funções aninhadas
e recursivas;
revisão dos modelos RISC e CISC.
(Notas de estudo: Bry (Ch 3.7 e 3.8) e slides
ISA_4 ; )
02-Mai-07
(sessão extra, para ficha de
avaliação)
Ficha de Avaliação 2.
04-Mai-07 (T)
Análise do nível ISA do IA-32 em Linux:
análise comparativa do modelo de implementação de
funções numa arquitectura RISC (MIPS) versus IA-32;
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).
(Notas de estudo: Bry (Ch 3.9); conclusão dos slides da aula anterior e slides
ISA_5 )
Semana 11
08-Mai-07 (TP1+TP2)
Análise laboratorial do código C compilado por ferramentas
da GNU em Linux para o IA32, contendo acesso a função e a estrutura de controlo
for, com utilização do depurador
gdb.
(Notas de estudo: exercícios resolvidos do
TPC7r
)
09-Mai-07 (TP3)
Análise laboratorial do código C compilado por ferramentas
da GNU em Linux para o IA32, contendo acesso a função e a estrutura de controlo
for, com utilização do depurador
gdb.
(Notas de
estudo: exercícios resolvidos do
TPC7r )
09-Mai-07 (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
(arrays multi-dimensionais e structures).
Reflexão sobre os objectivos de avaliação da 2ª ficha de avaliação, e respectiva
correcção.
(Notas de estudo: Bry (Ch 3.9); conclusão dos slides da aula anterior)
11-Mai-07 (T)
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).
(Notas de estudo: Bry (Ch. 3.15, Ch. 5.1 a 5.3, Ch. 9.0 e 9.3); sugere-se 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; e slides
AvDes_1 )
**************** Enterro da Gata **********************
Semana 12
22-Mai-07 (TP1+TP2)
Avaliação da Fase 2 do Projecto Integrado.
(Notas de
estudo: enunciado do TPC8,
com guião laboratorial incluído, cuja resolução deverá ser entregue até à hora
de início da sessão TP seguinte; exercícios resolvidos do TPC8r
)
23-Mai-07 (TP3)
Avaliação da Fase 2 do
Projecto Integrado.
(Notas de
estudo: enunciado do TPC8,
com guião laboratorial incluído, cuja resolução deverá ser entregue até à hora
de início da sessão TP seguinte; exercícios resolvidos do TPC8r )
23-Mai-07 (T)
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).
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); slides: os mesmos que da aula anterior )
23-Mai-07
(sessões extra, para ficha de
avaliação e continuação da avaliação da Fase 2 do Projecto Integrado)
Ficha de Avaliação 3. Conclusão da avaliação da Fase 2 do
Projecto Integrado.
25-Mai-07 (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; 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; 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,.
(Notas de estudo: Bry (Ch. 5.7) e slides
AvDes_2 )
Semana 13
29-Mai-07 (TP1+TP2)
Execução de funções com deficiências (no IA32 em Linux), e respectiva análise do
código gerado pelo compilador (em ambiente laboratorial).
(Notas de estudo: enunciado do TPC9,
com guião laboratorial incluído,
e código associado
(compactado), para apoio à aula seguinte)
30-Mai-07 (TP3)
Execução de funções com deficiências (no IA32 em Linux), e respectiva análise do
código gerado pelo compilador (em ambiente laboratorial).
(Notas de estudo: enunciado do TPC9,
com guião laboratorial incluído,
e código associado
(compactado), para apoio à aula seguinte)
30-Mai-07 (T)
Avaliação de desempenho na execução de programas: análise
do comportamento dum Pentium em operações iterativas 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_3 )
01-Jun-07 (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.
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.
Realização dos inquéritos de avaliação da disciplina.
(Notas de estudo: slides: os mesmos que os da aula anterior )
Semana 14
05-Jun-07 (TP1+TP2)
Introdução e análise de técnicas de optimização de desempenho e respectivas
medições no IA32 em Linux.
(Notas de estudo:
dicas para a resolução do Guião 5 )
06-Jun-07 (TP2)
Introdução e análise de técnicas de optimização de desempenho e respectivas
medições no IA32 em Linux.
(Notas de estudo:
dicas
para a resolução do Guião 5 )
06-Jun-07 (T)
Medição de tempos de execução de programas: aplicação de conceitos à análise prática de
desempenho de sistemas baseados em IA-32 em ambiente Linux; noção de processo
e de comutação de processos; referência à medição de tempos
com (i) contadores intervalares (do Unix), (ii) contadores de ciclos de clock
(só disponíveis a partir do P6 e nalguns CPU's); a função gettimeofday().
(Notas de estudo: Bry (Ch. 6.4 e 6.5; Ch. 9); slides
AvDes_4 )
08-Jun-07 (T)
Revisões de conceitos fundamentais e de práticas/métodos
de trabalho experimental.
Análise crítica ao funcionamento da disciplina.