Arquitectura de Computadores |
Sumários
Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14
departamento de informática |
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
15-Set-03 (TP1+TP2)
Não houve aula (ainda não houve aula teórica de apresentação)
16-Set-03 (T)
Não houve aula (docente ausente)
16-Set-03 (TP3)
Não houve aula (ainda não houve aula teórica de apresentação)
17-Set-03 (T)
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.
Introdução aos conceitos de "computador" e de "informação" no contexto de um computador.
Semana 2
22-Set-03 (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, na recepção do DI, até
às 13h00 de segunda 29-Set-03, para avaliação).
23-Set-03 (T)
Representação da informação no computador utilizando números binários (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).
(Notas de estudo: cópia dos slides ISC_1 e
texto ISC
(Cap.1); complementar: Sta (Ch1.1
e 1.2) ).
23-Set-03 (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, na recepção do DI, até
às 13h00 de segunda 29-Set-03, para avaliação).
24-Set-03 (T)
Representação da informação no computador (cont.): codificação de audio-visuais
e respectiva compactação.
Estrutura interna dum computador: o 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); caracterização dos barramentos.
(Notas de estudo: cópia dos slides ISC_2 e
texto ISC
(Cap. 2); complementar: Sta (Ch
3.3, 3.4)
).
Semana 3
29-Set-03 (TP1+TP2)
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. Resolução de exercícios com binários inteiros.
(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, impreterivelmente, no Gab.
Técnicos do DI, até
às 12h00 de segunda 06-Out-03, 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; texto do
Guião_1
para utilização na aula
laboratorial da próxima semana, a ser disponibilizado a 03-Out-03 e para ser
lido antes da aula).
30-Set-03 (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).
(Notas de estudo: texto ISC
(Cap. 3) e slides ISC_3 )
30-Set-03 (TP3)
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. Resolução de exercícios com binários inteiros.
(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, impreterivelmente, no Gab.
Técnicos do DI, até
às 12h00 de segunda 06-Out-03, 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; texto do
Guião_1
para utilização na aula
laboratorial da próxima semana, a ser disponibilizado a 03-Out-03 e para ser
lido antes da aula).
01-Out-03 (T)
Execução de instruções num computador; análise passo a passo da execução de uma
instrução em linguagem máquina: a busca de uma instrução à memória,
utilizando 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 busca de operando à memória).
(Notas de estudo: texto ISC
(Cap. 4.1 e 4.2) e slides ISC_3; complementar:
Sta (Ch
3.2) )
Semana 4
06-Out-03 (TP1+TP2)
Resolução de exercícios com valores em vírgula
flutuante.
Introdução à visualização da representação de valores numéricos em binário, em
ambiente laboratorial Linux/IA32.
(Notas de estudo: texto do
Guião_1
e respectivas sugestões de leitura; ficheiro
TPC2r
com os resultados dos exercícios propostos em TPC2; texto do
Guião_2
para utilização na aula laboratorial da próxima semana, a ser disponibilizado a
08-Out-03 e para ser estudado antes da aula)
07-Out-03 (T)
Revisão da estrutura global de um computador e seu funcionamento enquanto
equipamento que basicamente processa números.
Análise do funcionamento dum processador ao nível do seu 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), e (ii) registos
visíveis ao programador (em arquitecturas RISC e no IA32).
(Notas de estudo: texto
ISC
(Cap. 5.1 e 5.4 ) 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, 2003 (Cap. 6.1))
07-Out-03 (TP3)
Resolução de exercícios com valores em vírgula
flutuante.
Introdução à visualização da representação de valores numéricos em binário, em
ambiente laboratorial Linux/IA32.
(Notas de estudo: texto do
Guião_1
e respectivas sugestões de leitura; ficheiro
TPC2r
com os resultados dos exercícios propostos em TPC2; texto do
Guião_2
para utilização na aula laboratorial da próxima semana, a ser disponibilizado a
08-Out-03 e para ser estudado antes da aula)
08-Out-03 (T)
Análise do funcionamento dum processador ao nível do seu instruction set
(cont.):
(iii) modos de acesso aos operandos (em arquitecturas RISC e no IA32), (iv) tipos de instruções num CPU (aritméticas/lógicas, de transferência de
informação, de controlo de fluxo, ...), e (v) formatos de instruções
(comprimento, campos numa instrução, exemplos de formatos).
(Notas de estudo: texto
ISC (Cap. 5.2 a 5.5 ) e
slides ISC_4 )
Semana 5
13-Out-03 (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: texto do Guião_2
e respectivas sugestões de leitura; enunciado do
TPC3,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI (e apenas aqui!), até às 12h00 de segunda 20-Out-03, para
avaliação)
14-Out-03 (T)
Análise do funcionamento dum processador ao nível do seu instruction set
(cont.):
(vi) instruções de input/output, e (vii) ordenação de bytes numa palavra (little-endian, big-endian).
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 (noção de cache e de memória virtual).
(Notas de estudo: texto
ISC (Cap. 4.3 a 4.5 e 5.6
) e slides ISC_4
)
14-Out-03 (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: texto do Guião_2
e respectivas sugestões de leitura; enunciado do
TPC3,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI (e apenas aqui!), até às 12h00 de segunda 20-Out-03, para
avaliação)
15-Out-03 (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.
(Notas de estudo: a bibliografia de base desta e das próximas aulas
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 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; slides ISA_1 )
Semana 6
20-Out-03 (TP1+TP2)
Resolução do TPC3 (operações e acessos a operandos do IA32 em Linux), em
ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do TPC3
; enunciado do TPC4,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI (e apenas aqui!), até às 12h00 de segunda 27-Out-03, para
avaliação)
21-Out-03 (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).
(Notas de estudo: Bry (Ch 3.6) e slides
ISA_2 )
21-Out-03 (TP3)
Resolução do TPC3 (operações e acessos a operandos do IA32 em Linux), em
ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do TPC3
; enunciado do TPC4,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI (e apenas aqui!), até às 12h00 de segunda 27-Out-03, para
avaliação)
22-Out-03 (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.
(Notas de estudo: Bry (Ch 3.6)
e slides ISA_2 )
Semana 7
27-Out-03 (TP1+TP2)
Resolução do TPC4 (instruções de salto e estruturas de controlo do IA32 em Linux), em
ambiente laboratorial, com utilização do depurador dbg.
(Notas de estudo: exercícios resolvidos do
TPC4
; manual de utilização do depurador
Debugging
with DBG, em HTML (cópia local do original
em http://www.gnu.org/manual/, com 786KB, equivalente a 240 pág A4
impressas); enunciado do
TPC5,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI, até às 12h00 de segunda 03-Nov-03, para avaliação)
28-Out-03 (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).
(Notas de estudo: Bry (Ch 3.7)
e slides
ISA_3 )
28-Out-03 (TP3)
Resolução do TPC4 (instruções de salto e estruturas de controlo do IA32 em Linux), em
ambiente laboratorial, com utilização do depurador dbg.
(Notas de estudo: exercícios resolvidos do
TPC4
; manual de utilização do depurador
Debugging
with DBG, em HTML (cópia local do original
em http://www.gnu.org/manual/, com 786KB, equivalente a 240 pág A4
impressas); enunciado do
TPC5,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI, até às 12h00 de segunda 03-Nov-03, para avaliação)
29-Out-03 (T)
Análise do nível ISA do IA-32 em Linux:
análise da stack no caso de funções aninhadas e recursivas;
análise
comparativa do modelo de implementação de funções numa arquitectura RISC
(MIPS) versus IA-32.
(Notas de estudo: Bry (Ch 3.7)
e slides
ISA_4 )
Semana 8
03-Nov-03 (TP1+TP2)
Resolução do TPC5 (funções e procedimentos no IA32 em Linux),
em ambiente laboratorial, com utilização do depurador dbg.
(Notas de estudo: exercícios resolvidos do
TPC5
)
04-Nov-03 (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- e
multi-dimensionais).
(Notas de estudo: Bry (Ch 3.8)
e slides
ISA_5 )
04-Nov-03 (TP3)
Resolução do TPC5 (funções e procedimentos no IA32 em Linux),
em ambiente laboratorial, com utilização do depurador dbg.
(Notas de estudo: exercícios resolvidos do
TPC5
)
05-Nov-03 (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 e unions).
(Notas de estudo: Bry (Ch 3.9) e mesmos slides que na aula anterior)
Semana 9
10-Nov-03 (TP1+TP2)
Ficha de Avaliação 1 (turno
S1, S2 e S3).
(Notas de
estudo: enunciado de FA1
(turno
S1,
S2/S3); enunciado do
TPC6,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI, até às 12h00 de segunda 17-Nov-03, para avaliação )
11-Nov-03 (T)
Ficha de
Avaliação 1 (turno T1).
(Notas de
estudo: enunciado de FA1
(turno
T1); enunciado do
TPC6,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI, até às 12h00 de segunda 17-Nov-03, para avaliação )
11-Nov-03 (TP3)
Ficha de
Avaliação 1 (turno T2).
(Notas de
estudo: enunciado de FA1
(turno
T2); enunciado do
TPC6,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI, até às 12h00 de segunda 17-Nov-03, para avaliação )
12-Nov-03 (T)
Interpretação e análise da Ficha de Avaliação 1. Reflexão
crítica sobre o funcionamento da disciplina.
Semana 10
17-Nov-03 (TP1+TP2)
Resolução do TPC6 (manuseamento de estruturas de dados - arrays e structures
- no IA32 em Linux).
(Notas de estudo: exercícios resolvidos do
TPC6
; enunciado do
TPC7,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI até às 12h00 de segunda 24-Nov-03, para
avaliação)
18-Nov-03 (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).
(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 malhor compreensão das métricas orientadas à construção/avaliação do
desempenho de computadores; e slides
AvDes_1 )
18-Nov-03 (TP3)
Resolução do TPC6 (manuseamento de estruturas de dados - arrays e structures
- no IA32 em Linux).
(Notas de estudo: exercícios resolvidos do
TPC6
; enunciado do
TPC7,
cuja resolução deverá ser entregue, impreterivelmente, no Gab.
Técnicos do DI até às 12h00 de segunda 24-Nov-03, para
avaliação)
19-Nov-03 (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).
(Notas de estudo: mesmas que da aula anterior )
Semana 11
24-Nov-03 (TP1+TP2)
Resolução do TPC7 (introdução às técnicas de optimização de desempenho e
respectivas medições no IA32 em Linux).
(Notas de estudo: exercícios resolvidos do
TPC7
; enunciado do
TPC8,
cuja resolução deverá ser efectuada antes do início da aula seguinte)
25-Nov-03 (T)
Avaliação de desempenho na execução de programas: análise
das restantes técnicas de optimização independentes da máquina.
(Notas de estudo: Bry (Ch. 5.4 a 5.6); slides: os mesmos que da aula anterior )
25-Nov-03 (TP3)
Resolução do TPC7 (introdução às técnicas de optimização de desempenho e
respectivas medições no IA32 em Linux).
(Notas de estudo: exercícios resolvidos do
TPC7
; enunciado do
TPC8,
cuja resolução deverá ser efectuada antes do início da aula seguinte)
26-Nov-03 (T)
Não houve aula (docente no Encontro "O Património Arquitectónico na UM", com
apresentação de comunicação)
Semana 12
01-Dez-03 (TP1+TP2)
Feriado
02-Dez-03 (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écncias 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.
(Notas de estudo: Bry (Ch. 5.7) e slides
AvDes_2 )
02-Dez-03 (TP3)
Resolução do TPC8 (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.
03-Dez-03 (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, introdução de paralelismo
e introdução de hierarquia de memória.
(Notas de estudo: Bry (Ch. 5.8, 5.10 e 5.11) e slides
AvDes_2 )
03-Dez-03 (TP1+TP2)
(aula de compensação)
Resolução do TPC8 (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.
Semana 13
08-Dez-03 (TP1+TP2)
Feriado
09-Dez-03 (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 e Lei de Amdahl; conceitos associados a cada nível da
hierarquia de memória - hit, hit rate, miss, miss rate, miss penalty - e
impacto das técnicas de programação no desempenho da execução de uma aplicação
em sistemas com cache.
(Notas de estudo: Bry (Ch. 5.14, 5.15, 6.4 e 6.5) e slides
AvDes_3 )
09-Dez-03 (TP3)
Não houve aula para equilibrar o apoio ao conjunto das
turmas.
10-Dez-03 (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.9) e slides
AvDes_4 )
Semana 14
15-Dez-03 (TP1+TP2)
Ficha de Avaliação 2
(turnos S1 e S2).
16-Dez-03 (T)
Ficha de
Avaliação 2 (turno T1).
16-Dez-03 (TP3)
Ficha de
Avaliação 2 (turno T2).
17-Dez-03 (T)
Não houve aula (visita da Comissão de Avaliação do Centro de Investigação da
equipa docente)