Arquitectura de Computadores
Lic. Matemática & Ciências da Computação, 1º ano
2005/2006
Docente responsável: A.J.Proença


Sumários

Semana: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13   

Ultima Modificação: 09 Mar 2006

 

 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-06 (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/mcc/ac/).
(Slides apresentados: IntroAC )

21-Fev-06 (TP1)
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).

22-Fev-06 (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).

22-Fev-06 (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) ).

24-Fev-06 (TP3+TP4)
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).

Semana 2

28-Fev-06  (T)
Feriado de Carnaval.

28-Fev-06 (TP1)
Feriado de Carnaval.

01-Mar-06 (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, impreterivelmente, até à hora de 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).

01-Mar-06 (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.
(Notas de estudo: mesmas que da aula anterior )

03-Mar-06 (TP3+TP4)
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, impreterivelmente, até à hora de 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).

Semana 3

07-Mar-06 (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) ).

07-Mar-06 (TP1)
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, impreterivelmente, até à hora de 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).

08-Mar-06 (TP2)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.
(Notas de estudo:
texto do Guião_1 para utilização na próxima sessão TP, e para ser lido e entendido antes da aula)

08-Mar-06 (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) )

10-Mar-06 (TP3+TP4)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.
(Notas de estudo:
texto do Guião_1 para utilização na próxima sessão TP, e para ser lido e entendido antes da aula)

Semana 4

14-Mar-06 (T)
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), (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: texto 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))

14-Mar-06 (TP1)
Análise crítica da resolução de exercícios com valores em vírgula flutuante.
(Notas de estudo:
texto do Guião_1 para utilização na próxima sessão TP, e para ser lido e entendido antes da aula)

15-Mar-06 (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_1 para apoio à elaboração deste exercício foi divulgado no sumário da aula anterior)

15-Mar-06 (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).
(Notas de estudo: ficheiro TPC2r com os resultados dos exercícios propostos em TPC2; ISC (Cap. 5.2 e 5.3) e slides ISC_4, já disponibilizados)

17-Mar-06 (P3+TP4)
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_1 para apoio à elaboração deste exercício foi divulgado no sumário da aula anterior)

Semana 5

21-Mar-06 (T)
Análise do processador ao nível da arquitectura do instruction set (ISA): instruções de input/output; ordenação de bytes numa palavra (little-endian, big-endian).
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, 5,2, 5.3 e 5.7), Bry (Ch.1.5 e 1.6); slides ISC_4, já disponibilizados; recomenda-se ainda a leitura do
Guião_2 antes das sessões TP desta semana)

21-Mar-06 (TP1)
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_1 para apoio à elaboração deste exercício foi divulgado no sumário da aula anterior)

22-Mar-06 (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 na sessão TP seguinte)

22-Mar-06 (T)
Sugestões de leituras na Web para ligação de conceitos a tecnologias correntes.
Reflexão sobre o método de funcionamento e de avaliação da disciplina.
(Notas de estudo: slides com as sugestões de leitura e sobre a reflexão efectuada.)

22-Mar-06 (TP1) (14h-16h, aula de compensação do feriado do Carnaval)
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 na sessão TP seguinte)

24-Mar-06 (TP3+TP4)
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 na sessão TP seguinte)

Semana 6

28-Mar-06 (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 entretando disponiblilizado (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 )

28-Mar-06 (TP1)
Resolução do TPC3 (operações e acessos a operandos do IA32 em Linux), em ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do TPC3r ; enunciado do TPC4 e Guião 3, cuja resolução deverá ser entregue até à hora de início da sessão TP seguinte)

29-Mar-06 (TP2)
Resolução do TPC4 (operações e acessos a operandos do IA32 em Linux), em ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do TPC3r ; enunciado do TPC4 e Guião 3, cuja resolução deverá ser entregue até à hora de início da sessão TP seguinte)

29-Mar-06 (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)

31-Mar-06 (TP3+TP4)
Resolução do TPC4 (operações e acessos a operandos do IA32 em Linux), em ambiente laboratorial.
(Notas de estudo: exercícios resolvidos do TPC3r ; enunciado do TPC4 e Guião 3, cuja resolução deverá ser entregue até à hora de início da sessão TP seguinte)

Semana 7

04-Abr-06 (T)
Análise do nível ISA do IA32 em Linux (cont.): 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, do-while, while, for, switch).
(Notas de estudo: Bry (Ch 3.6) e slides ISA_2 )

04-Abr-06 (TP1)
Análise laboratorial do código C compilado por ferramentas da Gnu em Linux, contendo instruções de salto e estruturas de controlo do IA32, 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)

05-Abr-06 (TP2)
Análise laboratorial do código C compilado por ferramentas da Gnu em Linux, contendo instruções de salto e estruturas de controlo do IA32, 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)

05-Abr-06 (T)
Não houve aula (participação do docente nas JOIN'06)

07-Abr-06 (TP3+TP4)
Análise laboratorial do código C compilado por ferramentas da Gnu em Linux, contendo instruções de salto e estruturas de controlo do IA32, 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)

Semana 8  

11-Abr-06 (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: Bry (Ch 3.7) e slides
ISA_3 em formato PDF, e subconjunto desses slides, com animações, em PowerPoint )

11-Abr-06 (TP1)
Conclusão da sessão laboratorial anterior, complementada com a análise da stack frame associada a uma função.
(Notas de estudo:
exercícios resolvidos do TPC4r a divulgar a 21-Abr-06

12-Abr-06 (TP2)
Conclusão da sessão laboratorial anterior, complementada com a análise da stack frame associada a uma função.
(Notas de estudo: exercícios resolvidos do TPC4r  a divulgar a 21-Abr-06

12-Abr-06 (T)
Análise do nível ISA do IA-32 em Linux: análise detalhada da implementação de procedimentos/funções ao nível do assembly do IA-32 (e respectiva utilização da stack); análise da stack no caso de funções aninhadas e recursivas.
(Notas de estudo: mesmas que da aula anterior )

****************   Férias da Páscoa   **********************

19-Abr-06 (TP2)
Não houve aula para equilibrar com as restantes turmas.

19-Abr-06 (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.
(Notas de estudo: Bry (Ch 3.7 e 3.8) e slides
ISA_4 )

21-Abr-06 (TP3+TP4)
Conclusão da sessão laboratorial anterior, complementada com a análise da stack frame associada a uma função.
(Notas de estudo: exercícios resolvidos do TPC4r

Semana 9

25-Abr-06 (T)
Feriado.

25-Abr-06 (TP1)
Feriado.

26-Abr-06 (TP2)
Treino de utilização do debugger com exercícios de revisão.
(
Notas de estudo: enunciado do Guião 4,  para preparação da próxima sessão laboratorial )

26-Abr-06 (T)
Análise do nível ISA do IA-32 em Linux: análise cde um exemplo de implementação de funções numa arquitectura RISC (MIPS) versus IA-32.
(Notas de estudo: Bry (Ch 3.7 e 3.8) e mesmos slides )

26-Abr-06 (TP1) (14h-16h, aula de compensação do feriado da véspera)
Treino de utilização do debugger com exercícios de revisão.
(
Notas de estudo: enunciado do Guião 4,  para preparação da próxima sessão laboratorial )

28-Abr-06 (TP3+TP4)
Treino de utilização do debugger com exercícios de revisão.
(
Notas de estudo: enunciado do Guião 4,  para preparação da próxima sessão laboratorial )

Semana 10

02-Mai-06 (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.9) e  slides
ISA_5 )

02-Mai-06 (TP1)
Defesa do Projecto (fase 2)
(efectivamente realizado na quarta 03-Mai-06).

03-Mai-06 (TP2)
Defesa do Projecto (fase 2).

03-Mai-06 (T)
Defesa do Projecto (fase 2).

06-Mai-06 (TP3+TP4)
Defesa do Projecto (fase 2)
 (efectivamente realizado na quarta 03-Mai-06).

Semana 11 

09-Mai-06 (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 )

09-Mai-06 (TP1)
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 Guião 5, e código associado (compactado), para apoio à aula seguinte)

10-Mai-06 (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 Guião 5, e código associado (compactado), para apoio à aula seguinte)

10-Mai-06 (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 )

12-Mai-06 (TP3+TP4)
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 Guião 5, e código associado (compactado), para apoio à aula seguinte)

Semana 12

23-Mai-06 (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; 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 )

23-Mai-06 (TP1)
Introdução e análise de técnicas de optimização de desempenho e respectivas medições no IA32 em Linux.
(Notas de estudo: Guião 5 e código associado compactado )

24-Mai-06 (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: Guião 5 e código associado compactado )

24-Mai-06 (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.
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.
(Notas de estudo: Bry (Ch. 5.8, 5.10, 5.11, 5.14, 5.15); slides AvDes_3 )

26-Mai-06 (TP3+TP4)
Introdução e análise de técnicas de optimização de desempenho e respectivas medições no IA32 em Linux.
(Notas de estudo: Guião 5 e código associado compactado )

Semana 13

30-Mai-06 (T)
Avaliação de desempenho na execução de programas: 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.
(Notas de estudo: slides AvDes_3 )

30-Mai-06 (TP1)
Resolução de exercícios de revisão da matéria.
(Notas de estudo: dicas para a resolução do Guião 5 )

31-Mai-06 (TP2)
Resolução de exercícios de revisão da matéria.
(Notas de estudo: dicas para a resolução do Guião 5 )

31-Mai-06 (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 )
Realização dos inquéritos de avaliação da disciplina.

02-Jun-06 (TP3+TP4)
Resolução de exercícios de revisão da matéria.
Defesa do Projecto (fase 3)
.
(Notas de estudo: dicas para a resolução do Guião 5 )

 


Página mantida por aproenca@di.uminho.pt
Ultima Modificação: 09 Mar 2006