Lic. Matemática e Ciências da Computação, 2º ano
2002/03
Alberto José Proença & António Manuel Pina
Sumários
Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13
Nota: 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), MC (Material Complementar, normalmente de apoio às aulas teórico-práticas), HCW (revista electrónica com a série de referência "How Computers Work"), 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
23-Set-02 (TP1+TP2)
Não houve aula (ainda não houve aula teórica de apresentação)
24-Set-02 (T)
Apresentação. Introdução ao funcionamento da disciplina: apresentação
da documentação a fornecer (em formato electrónico, e relativo ao ano em
curso, em gec.di.uminho.pt/mcc/ac/) e da metodologia de trabalho e de
avaliação.
24-Set-02 (TP3)
Não houve aula (para sincronizar com outras turmas)
25-Set-02 (T)
Introdução aos conceitos de "computador" e sua organização
interna. Noção de "informação" no contexto de um computador e
elemento básico de representação da informação (bit).
Estrutura
interna dum computador (o processador, a memória, módulos de I/O e o sistema
de interligação), com destaque para o processador (a unidade de controlo, o conjunto de registos e as unidades
funcionais) e para a organização da memória (noção de endereço e de
célula).
Representação da informação no computador utilizando bits: texto e
respectivos alfabetos (introdução ao ASCII 7/8 bits e UNICODE), números
(referência a inteiros e reais) e comandos para o processador (noção de instruction
set).
(ISC
(Cap.1 e 2); complementar: Sta (Ch1.1
e 1.2) )
Semana 2
30-Set-02 (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).
(ISC
(Anexo A); complementar: Sta
(Ch
8.2, 8.3), Tan (Annex A); enunciado do
TPC1, para ser entregue, impreterivelmente, no lab. da disciplina até
às 15h00 de segunda 07-Out-02, para avaliação
)
01-Out-02 (T)
Estrutura
interna dum computador (cont): análise do sistema de interligação ( conjunto
de sinais em cada módulo, CPU, memória, I/O) e caracterização dos barramentos.
(ISC
(Cap. 2); complementar: Sta (Ch
3.3, 3.4)
)
01-Out-02 (TP3)
Sistemas de numeração e conversão de bases. Representação binária
de valores positivos e negativos (sinal + magnitude, complemento para 1, complemento para
2, e representação por excesso).
(ISC
(Anexo A); complementar: Sta
(Ch
8.2, 8.3), Tan (Annex A); enunciado do TPC1,
para ser entregue, impreterivelmente, no lab. da disciplina até
às 15h00 de segunda 07-Out-02, para avaliação)
02-Out-02 (T)
Não houve aula (Sessão solene do dia da Escola de Engenharia da UM, em
Azurém)
Semana 3
07-Out-02 (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.
(ISC
(Anexo B); complementar: Sta
(Ch8.4), Tan (Annex
B); enunciado do TPC2,
para ser entregue, impreterivelmente, no lab. da disciplina até
às 15h00 de segunda 14-Out-02, para avaliação; recomenda-se a ainda uma leitura sobre a história
do IEEE 754, bem como uma visita ao site
oficial da norma IEEE 754)
08-Out-02 (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. Análise sumária da estrutura do gcc.
(ISC
(Cap. 3) )
08-Out-02 (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.
(ISC
(Anexo B); complementar: Sta
(Ch8.4), Tan (Annex
B); enunciado do TPC2,
para ser entregue, impreterivelmente, no lab. da disciplina até
às 15h00 de segunda 14-Out-02, para avaliação; recomenda-se a ainda uma leitura sobre a história
do IEEE 754, bem como uma visita ao site
oficial da norma IEEE 754)
09-Out-02 (T)
Execução de
instruções num computador:passos elementares no CPU (fetch e execute);
introdução aos conceitos de registo de instrução, registo apontador para a
próxima instrução, mecanismo de busca de instruções à memória -
utilizando os barramentos de endereços, controlo e de dados - a descodificação das instruções e introdução à execução
de operações.
(ISC
(Cap. 4); complementar:
Sta (Ch
3.2) )
Semana 4
14-Out-02 (TP1+TP2)
Resolução de exercícios com valores em vírgula
flutuante.
(enunciado do TPC3,
para leitura em casa, para preparação
da aula da semana seguinte; já disponível resolução de TPC1
e de TPC2
; enunciado de TPC4 a distribuir no sumário da aula de 16-Out)
15-Out-02 (T)
Análise
do funcionamento dum processador e respectivo instruction set:
introdução às operações num processador - análise do n.º de operandos em cada
instrução, com introdução às operações aritméticas básicas, à localização de
operandos (escalares em registos, e estruturados em memória) - e análise de formatos
de instruções (comprimento, campos numa instrução, exemplos de formatos).
(ISC
(Cap. 5.1 e 5.2 ) )
15-Out-02 (TP3)
Resolução de exercícios com valores em vírgula
flutuante.
(enunciado do TPC3,
para leitura em casa, para preparação
da aula da semana seguinte; já disponível resolução de TPC1
e de TPC2
; enunciado de TPC4 a distribuir no sumário da aula de 16-Out)
16-Out-02 (T)
Análise
do funcionamento dum processador e respectivo instruction set:
tipos de instruções num CPU (aritméticas/lógicas, de transferência de
informação, de controlo de fluxo, ...), registos visíveis ao programador (em arquitecturas
RISC e no IA32), e modos de acesso aos operandos (em arquitetcuras RISC e no
IA32).
(ISC
(Cap. 5.3 a 5.5 ); enunciado do TPC4,
com resolução para entregar na aula TP da semana 6)
Semana 5
21-Out-02 (TP1+TP2)
Introdução em ambiente laboratorial aos mecanismos para desenvolvimento de
programas para IA32 em Linux
(gcc, as, objdump, gdb).
(Guião da sessão laboratorial em TPC3
; nota: a versão anteriormente disponibilizada de TPC4 continha
incorrecções; sugere-se um novo download do ficheiro com o mesmo
nome)
22-Out-02 (T)
Análise
do funcionamento dum processador e respectivo instruction set:
ordenação de bytes numa palavra (little-endian, big-endian), instruções de input/output,
optimização de desempenho ao nível do hadware (conceito de paralelismo ao
nível da instrução - processamento vectorial, pipeline,
superescalaridade - e de hierarquia de memória e cache).
(ISC
(Cap. 4.3 a 4.5 e 5.6 ) )
22-Out-02 (TP3)
Introdução em ambiente laboratorial aos mecanismos para desenvolvimento de
programas para IA32 em Linux
(gcc, as, objdump, gdb).
(Guião da sessão laboratorial em TPC3
; nota: a versão anteriormente disponibilizada de TPC4 continha
incorrecções; sugere-se um novo download do ficheiro com o mesmo nome)
23-Out-02 (T)
Análise do nível ISA do IA32 em Linux: modelo de desenvolvimento de programas;
análise das instruções mais comuns
para transferência de informação, e para execução de operações
aritméticas/lógicas.
(O material de estudo desta aula e das que se seguirão nas próximas semanas
segue o livro CSAPP em particular Bry (Ch.3); as noções apresentadas e
analisadas nos dois primeiros capítulos foi sendo coberta pelo texto entretando
disponiblilizado (ISC), enquanto esta aula seguiu essencialmente as secções
3.4 e 3.5; 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)
Semana 6
28-Out-02 (TP1+TP2)
Resolução do TPC4 (operações e acessos a operandos do IA32 em Linux), em
ambiente laboratorial.
(Exercícios resolvidos do TPC4
; enunciado do TPC5,
com resolução para entregar na aula TP da semana 7)
29-Out-02 (T)
Análise do nível ISA do IA32 em Linux:
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).
(Bry (Ch 3.6); os acetatos usados são os da aula
6 do Prof. Bryant (CMU) )
29-Out-02 (TP3)
Resolução do TPC4 (operações e acessos a operandos do IA32 em Linux), em
ambiente laboratorial.
(Exercícios resolvidos do TPC4
; enunciado do TPC5,
com resolução para entregar na aula TP da semana 7)
30-Out-02 (T)
Análise do nível ISA do IA32 em Linux: técnicas
de codificação das restantes estruturas de controlo presentes em C (do-while,
while, for, switch); caracterização sumária da problemática associada à
invocação de procedimentos.
(Bry (Ch 3.6); os acetatos usados são os mesmos da aula anterior, complementados com estes)
Semana 7
04-Nov-02 (TP1+TP2)
Resolução do TPC5 (instruções de salto e estruturas de controlo do IA32 em Linux), em
ambiente laboratorial, com utilização do depurador dbg.
(Exercícios resolvidos do TPC5
; manual de utilização do depurador Debugging
with DBG, em HTML (786KB, equivalente a 240 pág A4 impressas))
05-Nov-02 (T)
Não houve aula (Participação do docente na Conferência de "e-Learning"))
06-Nov-02 (T)
Revisão dos conceitos leccionados até à data.
08-Nov-02 (TP3)
Resolução do TPC5 (instruções de salto e estruturas de controlo do IA32 em
Linux), em ambiente laboratorial, com utilização do depurador dbg.
(Nota: aula leccionada a 08-Nov-02, em substituição da de 05-Nov-02)
(Exercícios resolvidos do TPC5
; manual de utilização do depurador Debugging
with DBG, em HTML (786KB, equivalente a 240 pág A4 impressas))
Semana 8
11-Nov-02 (TP1+TP2)
Resolução da Ficha de Avaliação 1, e respectiva
correcção colectiva.
(Enunciado e respectiva resolução de FA1 aqui
)
12-Nov-02 (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) e da sua implementação ao nível
do assembly do IA-32 (e respectiva utilização da stack).
(Bry (Ch 3.7); os acetatos usados estão aqui
)
12-Nov-02 (TP3)
Resolução da Ficha de Avaliação 1, e respectiva
correcção colectiva.
(Enunciado e respectiva resolução de FA1 aqui
)
13-Nov-02 (T)
Metodologia de construção de programas em assembly:
análise
comparativa do modelo de implementação procedimentos/ funções numa arquitectura RISC
(MIPS) versus
IA-32; análise da stack no caso de funções aninhadas e recursivas.
(Bry (Ch 3.7); os acetatos usados estão no mesmo ficheiro que os da aula anterior; enunciado do
TPC6,
com resolução para entregar na aula TP da semana 9)
Semana 9
18-Nov-02 (TP1+TP2)
Resolução do TPC6 (funções e procedimentos no IA32 em Linux).
(Exercícios resolvidos do TPC6
)
19-Nov-02 (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).
(Bry (Ch 3.8); os acetatos usados são os da aula
8 do Prof. Bryant (CMU) )
19-Nov-02 (TP3)
Resolução do TPC6 (funções e procedimentos no IA32 em Linux).
(Exercícios resolvidos do TPC6
)
20-Nov-02 (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 multi-dimensionais).
(Bry (Ch 3.8); os acetatos usados são os da aula
8 do Prof. Bryant (CMU) ; enunciado do TPC7,
com resolução para entregar na aula TP da semana 10)
Semana 10
25-Nov-02 (TP1+TP2)
Resolução do TPC7 (manuseamento de estruturas de dados - arrays e structures
- no IA32 em Linux).
(Exercícios resolvidos do TPC7
)
26-Nov-02 (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
(structures, structures com arrays, e unions);
alinhamento de dados em memória.
(Bry (Ch 3.9); os acetatos usados são ainda os da aula
8 do Prof. Bryant (CMU) )
26-Nov-02 (TP3)
Resolução do TPC7 (manuseamento de estruturas de dados - arrays e structures
- no IA32 em Linux).
(Exercícios resolvidos do TPC7
)
27-Nov-02 (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).
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).
(Bry (Ch. 3.15, Ch. 5.1 a 5.3, Ch. 9.0 e 9.3); os acetatos usados foram estes,
baseados nos acetatos das aula
10 e aula
18 do Prof. Bryant (CMU); enunciado do TPC8
e respectivos programas
em C, com resolução para preparar para a aula TP da semana 11)
Semana 11
02-Dez-02 (TP1+TP2)
Resolução parcial do TPC8 (técnicas de optimização de desempenho e
respectivas medições no IA32 em Linux).
(Nota: o TPC8
foi reformulado de modo a detalhar um
pouco mais o enunciado; proposta de resolução do TPC8
e respectivos códigos em C: medição
do clock e programa
para soma de inteiros )
03-Dez-02 (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, e discussão da
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).
(O material de estudo é o mesmo da aula anterior; contudo, sugere-se a leitura
de
P&H (Ch2.2, e 2.3), resumido aqui,
para uma malhor compreensão das métricas orientadas à
construção/avaliação do desempenho de computadores)
03-Dez-02 (TP3)
Resolução parcial do TPC8 (técnicas de optimização de desempenho e
respectivas medições no IA32 em Linux).
(Nota: o TPC8
foi reformulado de modo a detalhar um
pouco mais o enunciado; proposta de resolução do TPC8
e respectivos códigos em C: medição
do clock e programa
para soma de inteiros )
04-Dez-02 (T)
Avaliação de desempenho na execução de programas: análise das restantes
técnicas de optimização independentes 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 (indispensável à compreensão das técnicas de optimização
dependentes da máquina).
(Bry (Ch. 5.4 a 5.7 e 5.9); os acetatos usados foram estes,
baseados nos acetatos das aula
10 e aula
11 do Prof. Bryant (CMU); enunciado do TPC9
e funções
em C associadas, com resolução para preparar para a aula TP da semana
12; nota: preenchimento dos inquéritos será nas
aulas TP da próxima semana)
Semana 12
09-Dez-02 (TP1+TP2)
Resolução do TPC9 (análise de técnicas de optimização de desempenho e
respectivas medições de tempo). Realização
dos inquéritos de avaliação da disciplina.
(Exercícios resolvidos do TPC9
e respectivo código
C para a função com soma de inteiros)
10-Dez-02 (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
de loop unroll e de introdução de paralelismo.
(Bry (Ch. 5.7 a 5.8 e 5.10); os acetatos usados foram os da aula anterior)
10-Dez-02 (TP3)
Resolução do TPC9 (análise de técnicas de optimização de desempenho e
respectivas medições de tempo).
Realização
dos inquéritos de avaliação da disciplina.
(Exercícios resolvidos do TPC9
e respectivo código
C para a função com soma de inteiros)
11-Dez-02 (T)
Avaliação de desempenho na execução de programas: identificação de
"gargalos" de desempenho e utilização de técnicas de program
profiling; análise de técnicas de
optimização dependentes da máquina, com introdução à hierarquia de
memória (conceito de localidade e pirâmide de hierarquia de memória).
(Bry (Ch. 5.14, 5.15 e 6.3); os acetatos usados foram estes,
baseados nos acetatos das aula
10 e aula
12 do Prof. Bryant (CMU)
)
Semana 13
16-Dez-02 (TP1+TP2)
Resolução da Ficha de Avaliação 2.
(Enunciado de FA2 aqui
)
17-Dez-02 (T)
Organização
hierárquica da memória: conceitos
associados a cada nível da hierarquia - bloco (linha/página), hit, hit rate,
miss,miss rate, miss penalty; organização genérica de uma cache;
estratégias de mapeamento numa cache; impacto das técnicas de programação no
desempenho da execução de uma aplicação em sistemas com cache.
(Bry (Ch. 6.4 e 6.5); os acetatos usados foram adaptados da aula
14 do Prof. Bryant (CMU)
)
17-Dez-02 (TP3)
Resolução da Ficha de Avaliação 2.
(Enunciado de FA2 aqui
)
18-Dez-02 (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 contadores intervalares (do Unix).
(Bry (Ch. 8.3, 9.1 e 9.2); os acetatos usados foram adaptados das aulas
16 e 18 do Prof. Bryant (CMU)
)