SSC0511 - Organização de Computadores Digitais
- BlackJack: Andrey Garcia, Gabriel Rodrigues Machado, Markel Berestov, Rafaela Souza Silva - https://github.com/GabrielMachado11/BlackJackAssembly
- Arrow: Gabriel Muniz Morao, Juliana Yendo, Stella Granatto Justo - Repositorio: https://github.com/stellajusto/arrow-assembly | Youtube: https://www.youtube.com/watch?v=qqL6hVRvEkc
- Ultra Alien Fighter: Juliana de Mello Crivelli - https://github.com/jumc/ultra-alien-fighter
- BreakOut: Joao Marco Barros, Leonardo Toledo- Repositorio: https://github.com/JoaoMOBarros/BreakOut
- Snake: Julio Ng, Caio Ostan - https://github.com/juliongusp/asm
- Snake Bomb: Raphael Medeiros, Matheus Sanchez, Sergio Piza - https://github.com/rmedeiros23/Snake-Bomb
- DinoFuga: Victor Momenté, Vinicius Cortizo, João Victor Alves - https://github.com/VictorMomente/AssemblyGame
- Em Buscar do corote perdido: Marco Antonio Gallo, Murilo Kazumi de Freitas, Rubens Galdino - https://github.com/rubensgaldinojr/assemblygame-corote
- Snake: Orlando Pasqual Filho - https://github.com/NirvanaZen/SSC0511-Organizacao-de-Computadores-Digitais
- Snake: Guilherme Queiroz/ Pedro Fazio - https://github.com/Guilherme292/Projeto-Snake-ORG-Comp-I
- DPJump: Leandro Giusti Mugnaini/Matheus Borges Kamla/Bruno Ribeiro Helou - https://github.com/leandromugnaini/jogoassembly
- Velha: Caio Alarcon, Denis Alexandre, Bruno Menzzano https://github.com/CaioAlarcon/projetos/tree/master/velha
- Snake Trifásico: Eduardo Zaboto Mirolli, Leonardo Bellini dos Reis, Vinícius Torres Dutra Maia da Costa - https://github.com/LeoBellini/jogo
- Hoth: Henrique Freitas, Jayro Boy, Vinícius Finke - https://github.com/JayroBoy/OrgComp2018
- Snake Trifásico: Eduardo Zaboto Mirolli, Leonardo Bellini dos Reis, Vinícius Luiz da Silva Genésio - https://github.com/LeoBellini/jogo
- Insira o seu projeto AQUI
Apresentação da Disciplina
Professor: Eduardo do Valle Simões Email: Simoes AT icmc.usp.br Departamento de Sistemas de Computação – ICMC - USP Grupo de Sistemas Embarcados e Evolutivos Laboratório de Computação Reconfigurável
Organização de Computadores Digitais Créditos Aula: 4 Créditos Trabalho: 0
Objetivos Introduzir os conceitos básicos de Lógica Digital e de organização de computadores.
Programa Arquitetura de processadores: elementos básicos, operação geral, macro instruções e microinstruções. Subsistemas de memória. Unidade de controle: fundamentos, desenvolvimento e implementação. Técnicas para organização de E/S, uso de DMA e Barramentos. Noções de Linguagens Montadoras.
Avaliação Serão realizadas três provas sobre os assuntos do programa. 1ª Prova: Dia xx/0x/2017 2ª Prova: Dia xx/0x/2017 3ª Prova: Dia xx/0x/2017 REC: xx/0x/2017
A nota final será calculada pela média ponderada dessas notas obtidas pelo aluno no decorrer do semestre. Norma de Recuperação: (NP-2) / 5 * Mrec + 7 - NP, se Mrec > 5 Max { NP, Mrec }, se Mrec < 5
Bibliografia Livro(s) Texto(s): -TANENBAUM, A.S. Structured Computer Organization, Prentice Hall, 4th ed, 1999.
- STALLINGS, W. Arquitetura e Organização de Computadores, Prentice Hall, 5a. ed., 2002. -PATTERSON, D.A.; HENNESSY, J.L. Computer Organization and Design: The Hardware/Software Interface, Morgan Kaufmann, 1994. -MONTEIRO, M.A. Introdução à Organização de Computadores, 3a ed. Livros Técnicos e Científico Editora SA, 1996.
Programa da Disciplina: A seguir, a ementa da disciplina é apresentada com uma descrição da maneira com que cada tópico será abordado e dos capítulos dos Livros (PATTERSON - 3rd ed, 2003 e MONTEIRO - 5a ed, 2007) que contém cada tópico:
- Revisão de conceitos sobre blocos lógicos/básicos; subsistemas de memória, organização, síntese e análise;
- duas aulas iniciais de revisão de todas as estruturas necessárias para a disciplina: multiplexadores, registradores, memórias (construção, barramentos, operação), ULA, state-machine, barramentos e interconexões.
- Será dada uma lista de exercícios para testar o conhecimento dos alunos nestes pontos, levantar deficiências e corrigi-las o mais cedo possível.
- As aulas seguintes, apresentam o projeto incremental de um processador contendo ULA, Máquina de Controle, Memória, registradores e dispositivos de I/O, servindo também de revisão pratica de implementação destes sub-sistemas e suas interconexões.
- PATTERSON Cap. 1.1 a 1.3, 3.1 a 3.5 (3rd ed, 2003)
- MONTEIRO Cap. 1.1.3, 3.3.1.2, 3.4.1, 4.2.1, 4.2.3, 4.3.3, 6.2.1, 6.2.2, 6.3, 6.4, 6.5., E.1 (5a ed, 2007)
- Arquitetura de processadores, elementos básicos, operação geral, macro instruções e microinstruções, unidade de controle, fundamentos, desenvolvimento e implementação.
- Serão vistas as arquiteturas de Harvard e Von Neumann e será feita uma breve caracterização de maquinas RISC e CISC e seus elementos básicos.
- Um processador genérico (baseado na arquitetura Von Neumann / RISC) será implementado progressivamente e serão dados diversos exemplos de operação de suas subestruturas para todo um conjunto completo de instruções (ex.: ADD, LOAD, STORE, CALL, JUMP, PUSH, PULL, SHIFT ...)
- Serão apresentadas unidade de controle implementadas por elementos lógicos e por microprograma. Será também apresentado progressivamente todo o algoritmo de uma unidade de controle capaz de controlar as operações do conjunto de instruções do processador implementado.
- Serão apresentadas as características de sistemas de memória.
- Estes pontos serão vistos em uma seqüência de varias aulas, nas quais o processador e a máquina de controle serão construídos para executar o conjunto de instruções, uma a uma, revendo então seus fundamentos, desenvolvimento e implementação.
- PATTERSON Cap. 2.1 a 2.8, 5.1 a 5.5, 5.7, 7.1 a 7.2 (3rd ed, 2003)
- MONTEIRO Cap.8.1 a 8.5, 11.1, 11.2, 11.3.1, 11.3.2, 11.3.3 (5a ed, 2007)
- Técnicas para organização de E/S, uso de DMA. Barramentos, conceitos gerais, estudos de casos.
- Barramentos, E/S e DMA serão vistos em duas fases: a) Durante a revisão e a implementação progressiva do processador, varias noções praticas de diversos tipos de barramentos (controle, endereço, dados) e de dispositivos de E/S serão apresentadas. Inclusive, será construída em aula uma interface de leitura de teclado e uma controladora de vídeo (bastante simplificada: Texto 20 linhas x 16 colunas), ilustrando um mapa de caracteres e uma memória de vídeo. Serão também apresentados os conceitos de portos de entrada e saída em microcontroladores e interrupções de E/S. b) Serão apresentados em transparências vários exemplos de hierarquia e controle (arbitragem) de barramentos, E/S Programada e os conceitos, operação e exemplos de DMA. As transparências serão utilizadas para apresentar (e não resumir) as informações conceituais do Livro sobre estes temas.
- PATTERSON Cap. 8.1 a 8.7 (3rd ed, 2003)
- MONTEIRO Cap. 10.1 a 10.3, 10.5, D.3.1, D.3.2 (5a ed, 2007)
- Noções de Linguagens Montadoras.
- Serão apresentados exemplos de compilação de linguagens de alto nível para instruções Assembly e a utilização de montadores para converter linguagem montadora em linguagem de máquina, apresentando exemplos simples de transformação de linguagem C em linguagem montadora, como, por exemplo, inicialização de variáveis ("Int A = 5;"), Loops (For), e condicional (Se-Entao).
- Também serão vistos vários exemplos de desenvolvimento de programas em linguagem Assembly realizando diversas funcionalidades inclusive E/S.
- PATTERSON Cap. 2.5 a 2.8, 2.10, 2.13, 2.15 (3rd ed, 2003)
- MONTEIRO Cap. C.2, C.3, C.6 (5a ed, 2007)
Metodologia:
- As aulas serão principalmente expositivas explicando-se na lousa os conteúdos do livro. Sendo assim, a cópia do material dado na lousa possibilitará a obtenção de uma síntese bem exemplificada do conteúdo do livro.
- Serão utilizadas transparências, apresentando os tópicos: arquitetura de processadores, elementos básicos, vários exemplos de hierarquia e controle (arbitragem) de barramentos, E/S Programada, configurações de memória e o conceito, operação e exemplos de DMA.
- Será disponibilizada uma ampla lista de exercícios sobre toda a matéria e marcada uma aula específica para tirar as duvidas dos alunos sobre os exercícios.
- Serão apresentadas em aula e disponibilizadas aos alunos ferramentas de CAD para a programação e simulação de processadores. Nestas ferramentas, serão apresentados a arquitetura do processador, seu mapa de memória, conjunto de instruções e programas em Assembly controlando dispositivos como sensores, motores e esteiras e alguns jogos.
- Será disponibilizada uma ferramenta que é um simulador de operação de um processador bastante semelhante ao que será apresentado e implementado em aula, desenvolvida por alunos veteranos do ICMC, incluindo os códigos (feitos em linguagem C) do algoritmo que simula os módulos do processador, o algoritmo da máquina de controle e um montador para os programas em linguagem de máquina. Com esta ferramenta, os alunos podem editar o processador, incluir novas instruções, reprogramar a máquina de controle para controlar estas novas instruções e editar o montador para montá-las para o código de maquina do processador.
- Serão também oferecidas aulas opcionais para a turma no laboratório, na qual serão apresentados a linguagem VHDL e a utilização das placas de FPGA recentemente adquiridas para a implementação de processadores próprios dos alunos. Serão fornecidas transparências com a síntese desta metodologia para os alunos.
- Alguns alunos serão convidados a apresentar implementações para seus colegas utilizando as ferramentas apresentadas para implementar software em linguagem montadora e controlar dispositivos com os seus microcontroladores, bem como os que implementarem processadores próprios em software com o simulador ou em hardware na placa de FPGA.
- Todo este material será disponibilizado diretamente aos alunos durante as aulas e através do github.