u n i v e r s i d a d e   d o   m i n h o   -   d e p.   i n f o r m á t i c a

Arquitectura de Computadores

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 10aula 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 10aula 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 10aula 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) )