Arquitetura e Organização de Computadores
 

Mestrando em Ciências da Computação pela Universidade Federal de Pernambuco; Pós-graduado em Gestão de Projetos pela Universidade de Pernambuco; Bacharel em Ciências da Computação pela Universidade Católica de Pernambuco.

Atualmente é Arquiteto de Software, Líder de Projetos e Pesquisador Líder no Centro de Pesquisas e Desenvolvimento UFPE/Samsung.



Revistas Interessantes
Communications ACM
IEEE Spectrum
IEEE Software
Wired
MIT Technology Review
The Economist
Time
News Week
Financial Times

 
Objetivos
Conteúdo Programático
Avaliação
Projetos
Bibliografia
Cronograma


Docente

Prof. Antonio Luiz Cavalcanti
antonio.cavalcanti at gmail.com


Página da Disciplina: http://www.cin.ufpe.br/~alocj/aoc

Horário: Quinta-feira de 18:50 as 22:10 horas

!! Quadro de Avisos !!

  • Reiniciando os Estudos
  • Leitura complementar importante
    • D. Lindley, "Brains and Bytes," Comm. ACM, vol. 53, no. 9, pp. 13-15, Sep 2010.





Objetivos da Disciplina

Conteúdo Programático

Apresentar conceitos, abordagens de desenvolvimento e boas práticas dos aspectos envolvidos no projeto de computadores digitais.

Competências a serem desenvolvidas

  1. Compreender quais os componentes básicos de um computador digital, como esses componentes funcionam e interagem.

  2. Compreender conceitos de projeto e implementação de um computador atual.

  3. Ter ciência de quais os desafios que ainda precisam ser superados e qual a perspectiva de futuro.

  • Introdução, conceitos básicos e a Máquina de Von Neumann.
  • Representação Numérica e Aritmética Computacional
  • Programação em Linguagem de Máquina MIPS e Assembly 8086
  • O Processador - Datapath, Controle, Pipelining, Super Pipelining; Overview Arquitetura Intel 64 bits.
  • Hierarquia de Memória - Cache, Memória Principal e Memória Virtual
  • Armazenamento Secundário - Discos Rígidos, Memórias Flash e outros tópicos de I/O
  • Multicores, Multiprocessadores e Clustrers
  • Microcontroladores



Metodologia de Avaliação

Bibliografia

  • Primeira Avaliação
    • Avaliação Escrita valendo 40% da nota
      • Introdução
      • Representação Numérica e Aritmética Computacional
    • Projeto Individual em MIPS e Assembly 8086 valendo 60% da nota
      • Propostas de projeto serão lançadas aos alunos no início das aulas de linguagem de máquina.
  • Segunda Avaliação
    • Avaliação Escrita valendo 70% da nota
    • Listas de exercícios valendo 20% da nota
    • 10% - A negociar.
  • Básica
    • Patterson, David. Organização e Projeto de Computadores, 3ª Edição. Elsevier Editora Ltda. 2003.
    • Patterson, David. Computing Organization and Design, 4th Edition. Elsevier. 2009.
  • Complementar
    • Stallings, William. Arquitetura e Organização De Computadores, 8ª Edição. Prentice Hall. 2009.
    • Slides da Disciplina.
    • Artigos indicados em sala.



Softwares and Source Code




Projetos da Disciplina

* Deve-se escolher duas implementações, uma fácil e uma média. Implementar uma delas em MIPS e a outra em ASM 8086. *

Nome
Tipo
Dificuldade
Descrição Funcional
Display 7 Segmentos 00 - 99
 MIPS 
 Fácil 
Controlar um par de displays de 7 segmentos para contagem de 0 a 99. O usuário deve fornecer um número entre 15 e 99 para que o contador realize a contagem de 0 até o número lido. Caso o número lido seja inválido (Não é um inteiro, ou está fora do range) o usuário precisa ser notificado e receber a oportunidade de fazer novamente a leitura. O par de displays de 7 segmentos a ser usado e suas instruções podem ser encontradas no menu Tools > Digital Lab Sim.
Inteiro para BCD e BCD para Inteiro
 MIPS/8086 
 Fácil 
Implementar o algoritmo que tranforma inteiros em representação BCD e vice-versa. O Aluno deve entra com um valor em Hexadecimal, converter ele para inteiro e só após isso converter para BCD. O valor em decimal, o número binário do da representação do inteiro e número binário da representação do BCD. !!! Importante !!! - Deve-se implementar o algorítmo completo sem se utilizar nenhum dos comandos prontos que facilitam essa conversão em ASM e MIPS.
Operações Com Matrizes
 MIPS/8086 
 Fácil 
Solicitar ao usuário que entre com as dimensões das matrizes N x M. Pode ser definida uma dimensão máxima aceita, por exemplo 5 x 5. Solicitar que leia os dados de cada uma das matrizes. Em caso de leitura inválida (Não é um inteiro, ou está fora do range) o usuário precisa ser notificado e receber a oportunidade de fazer novamente a leitura. Fazer o produto do somatório das diferenças das matrizes Triangular superior Triangula Inferior. Exemplo:

Matriz AMatriz A Tringular SuperiorMatriz A Tringular Inferior
abc
def
ghi
abc
def
ghi
abc
def
g hi

Matriz B
jkl
mno
pqr

Produto do somatório das diferenças de
Triangular Superior: Result TS = (a-j)+(b-k)+(c-l) + (e-n)+(f-o) + (i-r)
Triangular Inferior: Result TI = (a-j) + (d-m)+(e-n) + (g-p)+(h-q)+(i-r)
Produto = Result TS * Result TI
Distância Euclidiana Quadrática
 MIPS/8086 
 Fácil 
Computar a distância Euclidiana Quadrática entre vários vetores. Deve ser pedido ao usuário o número de vetores a serem lidos (N) e o número de elementos de cada vetor (k). Deve-se ler os elementos de dois conjuntos de N vetores. Em caso de leitura inválida (Não é um inteiro, ou está fora do range) o usuário precisa ser notificado e receber a oportunidade de fazer novamente a leitura. Calcula para cada par de vetores a distância Euclidiana Quadrática.
Exemplo:
Conjunto 1Conjunto 2D(Vc1,Vc2)
V0abc
V1def
V2ghi
V0'a'b'c'
V1'd'e'f'
V2'g'h'i'
D(V0,V0')( a - a' )^2 + ( b - b' )^2 + ( c - c' )^2
D(V1,V1')( d - d' )^2 + ( e - e' )^2 + ( f - f' )^2
D(V2,V2')( g - g' )^2 + ( h - h' )^2 + ( i - i' )^2
Criptografia CESAR - "Melhorada"
 MIPS/8086 
 Fácil 
Entrar com o nome do arquivo a ser cifrado e com o valor do deslocamento. Aplicar o algoritmo da cifra de CESAR e após isso aplicar a operação XOR com o texto cifrado com CESAR invertido e salvar o resultado em outro arquivo. Fazer método de cifragem e decifragem. Dica, o arquivo pode ter tamanho bastante limitado para todo seu conteúdo caber na pilha.
Arvore Binária
 MIPS/8086 
 Médio 
Implementação de uma árvore binária de busca. Cada nó da árvore deve ocupar exatamente 1 palavra (4 bytes) onde os dois bytes mais significativos são os dados e os dois menos significativos são as referências para os nós a esquerda e direita. A árvore pode ser armazenada em um array de palavras na memória que deve poder armazenar pelo menos 100 nós. A entrada de dados pode ser feita diretamente no vertor da árvore e deve ser considerado que já estará devidamente ordenada. Deve ser possível exbir toda árvore, ou buscar um item específico. No caso da busca de um item específico deve se dizer o caminho para se chegar ao item (pode ser em ordem reversa).
Exemplo:
Item <- dir <- dir <- esq <- raiz
OU
Raiz -> esq -> dir -> dir -> raiz
Em caso de leitura inválida (Não é um inteiro, ou está fora do range) o usuário precisa ser notificado e receber a oportunidade de fazer novamente a leitura.
Merge Sort
 MIPS/8086 
 Médio 
Implementação do algortmo de ordenação MERGE SORT. Os itens a seram ordenados devem ser lidos de um arquivo o resultado ordenado salvo em um segundo arquivo.
Virus Hello World
 8086 
 Médio 
Implementação de um vírus infectante que insere um código de hello world em outro executável (Pode-se utilizar infecção de .COM que é mais simples). A infeção não pode inutilizar o executável horiginal.

!!! IMPORTANTE !!! O vírus deve infectar todos os arquivos do SEU DIRETÓRIO e nenhum outro. O código infectante deve ser apenas um Hello Word.

Códigos destrutivos serão punidos com ZERO por mais brilhante que sejam.

O objetivo desse exercício é desmitificar a programação de vírus e introduzir o aluno no mundo de combate a eles e não incentivar o aluno a atos destrutivos.

O código gerado deve estar completamente comentado e com explicações sobre o objetivo instrutivo e alerta sobre má utilização.



Cronograma da Disciplina
2011.2

Data
Conteúdo Planejado
Material
Exercícios
04/08/2011Apresentação da Disciplina e IntroduçãoDropboxSlide 7 do arquivo "01 - Introdução.pdf"
Material Complementar
  • Video: Babbage's Difference Engine by WIRED - http://www.youtube.com/watch?v=0anIyVGeWOI&feature=related
  • S. Borkar and A. A. Chen, "The Future of Microprocessors," Comm. ACM, vol. 54, no. 5, pp. 67-77, May 2011.
  • D. A. Patterson, "The Trouble with Multi-Cores," IEEE Spectrum, vol. 47, no. 7, pp. 28-32 and 52-53, July 2010.
  • J. Fitzpatrick, "An Interview with Steve Furber (ARM Designer)," Comm. ACM, vol. 54, no. 5, pp. 34-39, May 2011.
  • "An Interview with Maurice Wilkes," Comm. ACM, vol. 52, no. 9, pp. 39-42, Sep 2009.
  • "An Interview with Edsger W. Dijkstra," Comm. ACM, vol. 53, no. 8, pp. 41-47, Aug 2010.
  • Can Programming Be Liberated From the von Neumann Style? 1977 Turing Award Lecture
  • J. von Neumann, The Computer and the Brain, New Haven: Yale University Press, 1958 (or later editions).
11/08/2011 Linguagem de máquina (MIPS): Registradores, Memória, Operações, Operandos, Tomada de DecisãoDropboxSlide 29 do arquivo "02 - Introdução a Linguagem de Máquina - MIPS.pdf"
Material Complementar
  • Brad Smith, “ARM and Intel Battle over the Mobile Chip’s Future,” Computer, vol. 41, no. 5, pp. 15-18, May 2008.
  • J. Mashey, "The Long Road to 64 Bits," Comm. ACM, vol. 52, no. 1, pp. 45-53, Jan 2009.
18/08/2011Linguagem de máquina (MIPS): Resolução do exercício da balança industrial, Endereçamento, Definição dos Projetos de DisciplinaDropboxEsforço focado no projeto da 1a Avaliação.
Material Complementar
  • --
25/08/2011Linguagem de máquina (MIPS): Transformação em Linguagem Binária, Compilador, Assembler, Liker e LoaderDropboxEsforço focado no projeto da 1a Avaliação.
Material Complementar
  • M. Hall, D. Padua and K. Pingali, "Compiler Research: The Next 50 Years," Comm. ACM, vol. 52, no. 2, pp. 60-67, Feb 2009.
  • J. Larus and G. Hunt, "The Singularity System," Comm. ACM, vol. 53, no. 8, pp. 72-79, Aug 2010.
  • S. V. Adve and H.-J. Boehm, "Memory Models: A Case for Retinking Parallel Languages and Hardware," Comm. ACM, vol. 53, no. 8, pp. 90-101, Aug 2010.
  • G. L. Steele Jr., "An Interview with Frances E. Allen," Comm. ACM, vol. 54, no. 1, pp. 39-45, Jan 2011.
01/09/2011Aritmética computacional: Introdução, Número Com Sinal e Sem Sinal, Adição e Subtração, multiplicação, divisão, ponto flutuanteDropboxEsforço focado no projeto da 1a Avaliação.
08/09/2011Linguagem Computacional (8086): Registradores, Memória, Operações, Operandos e Tomada de DecisãoDropboxEsforço focado no projeto da 1a Avaliação.
15/09/2011Linguagem Computacional (8086): Simulador 8086, Compilador TASM, ExercíciosDrop BoxEsforço focado no projeto da 1a Avaliação
22/09/2011Primeira Avaliação
29/09/2011Apresentação dos Projetos----
06/10/2011O Processador: Introdução e Data Path----
Material Complementar
  • D. Lindley, "Brains and Bytes," Comm. ACM, vol. 53, no. 9, pp. 13-15, Sep 2010.
13/10/2011 O Processador: Data Path e Controle----
20/10/2011O Processador: Pipelining e Super Pipelining, Exceções e Arquitetura Intel 64 bits----
27/10/2011Hierarquia de Memória: Registradores e Cache----
03/11/2011Hierarquia de Memória: Memória Principal e Memória Virtual----
10/11/2011Disco rígido, Memória Flash e outros tópicos de I/O.----
17/11/2011Multicores, Multiprocessors e Clustrers e Visão Geral de Arquiteturas de Microcontroladores----
24/11/2011Segunda Avaliação
01/12/2011Segunda Chamada
15/12/2011Avaliação Final