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.
|
|
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.
|
| 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
-
Compreender quais os componentes básicos de um computador digital, como esses componentes funcionam e interagem.
-
Compreender conceitos de projeto e implementação de um computador atual.
-
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
|
| |
- 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.
|
|
* 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 A | Matriz A Tringular Superior | Matriz A Tringular Inferior |
|
|
|
Matriz B
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 1 | Conjunto 2 | D(Vc1,Vc2) |
|
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.
|
|
|
Data | Conteúdo Planejado | Material | Exercícios |
04/08/2011 | Apresentação da Disciplina e Introdução | Dropbox | Slide 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ão | Dropbox | Slide 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/2011 | Linguagem de máquina (MIPS): Resolução do exercício da balança industrial, Endereçamento, Definição dos Projetos de Disciplina | Dropbox | Esforço focado no projeto da 1a Avaliação. |
| Material Complementar
|
25/08/2011 | Linguagem de máquina (MIPS): Transformação em Linguagem Binária, Compilador, Assembler, Liker e Loader | Dropbox | Esforç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/2011 | Aritmética computacional: Introdução, Número Com Sinal e Sem Sinal, Adição e Subtração, multiplicação, divisão, ponto flutuante | Dropbox | Esforço focado no projeto da 1a Avaliação. |
08/09/2011 | Linguagem Computacional (8086): Registradores, Memória, Operações, Operandos e Tomada de Decisão | Dropbox | Esforço focado no projeto da 1a Avaliação. |
15/09/2011 | Linguagem Computacional (8086): Simulador 8086, Compilador TASM, Exercícios | Drop Box | Esforço focado no projeto da 1a Avaliação |
22/09/2011 | Primeira Avaliação |
29/09/2011 | Apresentação dos Projetos | -- | -- |
06/10/2011 | O 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/2011 | O Processador: Pipelining e Super Pipelining, Exceções e Arquitetura Intel 64 bits | -- | -- |
27/10/2011 | Hierarquia de Memória: Registradores e Cache | -- | -- |
03/11/2011 | Hierarquia de Memória: Memória Principal e Memória Virtual | -- | -- |
10/11/2011 | Disco rígido, Memória Flash e outros tópicos de I/O. | -- | -- |
17/11/2011 | Multicores, Multiprocessors e Clustrers e Visão Geral de Arquiteturas de Microcontroladores | -- | -- |
24/11/2011 | Segunda Avaliação |
01/12/2011 | Segunda Chamada |
15/12/2011 | Avaliação Final |
|