Organização de Computadores
60 horas
Tendo como base a execução de atividades práticas e o desenvolvimento de produtos, apresentar ao estudante os principais conceitos relacionados a organização do microprocessador e dos dispositivos que permitem a comunicação entre este e os elementos periféricos.
Conceitos e diferenças entre Organização e Arquitetura de Computadores; Evolução e Desempenho do Computador; Estrutura e Função do Processador; Sistema de Entrada e Saída; Sistema de Armazenamento de Dados; Suporte do Sistema Operacional.
1. Introdução à Organização de Computadores.
Organização vs Arquitetura de Computadores.
2. Evolução e Desempenho do Computador.
Evolução dos Sistemas de Computação.
Máquinas Multiníveis Contemporâneas.
3. Função e Interconexão do Computador.
Componentes e Funções da UCP.
Sistema de Comunicação de Dados.
4. Estruturas, Tipos e Organização de Memórias.
Registradores, Memórias e seus Tipos.
Desempenho em Cache.
5. Estrutura e Função do Processador.
Coordenação e Comunicação entre os Componentes da UCP.
Execução de Instruções.
6. Sistema de Entrada e Saída.
Comunicação entre Dispositivos.
Sistema de E/S por Pooling, Interrupção e DMA.
7. Suporte do Sistema Operacional.
As Aplicações de Usuário e o Núcleo do Sistema.
O Núcleo do Sistema e o Nível de Máquina.
Aprender fazendo e fazer aprendendo. As ações implementadas têm como foco o aprendizado de Organização de Computadores pelo uso de recursos computacionais - privilegiando o projeto por simuladores e o desenvolvimento prático; seguido de exposições teóricas, apoiadas por: simulações, slides e vídeos. Em resumo, a metodologia tem como base a relação prática entre Conteúdos, Atividades e Produtos. Neste contexto, o conteúdo é toda base de conhecimento necessária a aula; a atividade é tida ação de aprendizado e; o produto é qualquer produção prática e/ou teórica sobre o conteúdo, podendo até ser uma aplicação deste ou até mesmo uma ação de aprendizado com escopo expandido.
A nota final será dada pelas avaliações dos artefatos (relatório, lista de exercício - manuscritas, apresentação oral, pôster, postagem, vídeo, ...) produzidos durante as aulas e entregues em cada uma das datas especificadas. O aluno também será avaliado através de outros recursos, como p.ex. a frequência e a apresentação de artefatos não obrigatórios - os quais poderão até ter pontuação extra.
Conteúdo:
Revisão: Aritmética Computacional e Eletrônica Digital.
Organização vs Arquitetura de Computadores.
Arquitetura e Organização de Computadores - Stallings (Capítulo 1).
Arquitetura e Organização de Computadores - O que significa isso?
15 Conceitos de Hardware que todo Estudante de Tecnologia precisa conhecer.
Atividades:
Diferenciando os temas acadêmicos Organização e Arquitetura de computadores.
A diferença entre Funções e Componentes.
As Semelhanças e as Diferenças.
Demonstrando na prática como computadores implementam operações matemáticas.
Exemplos de Soma de 1 bit, com base em Circuitos para Somadores: Blockly, Arduino e Micro:Bit.
A Comparação e soma de inteiros, usando apenas operadores lógicos.
Avaliativa: Em equipes de 3 a 5 alunos, desenvolver um simples programa (na linguagem que for melhor para a equipe) para executar uma operação lógica E (AND) entre um número inteiro qualquer e 1. Observe o resultado e verifique o possível (ou possíveis) uso para o programa. Lembrem-se que o Relatório (Roteiro) desta atividade fará parte do trabalho prático da primeira avaliação.
Produtos:
Ferramentas de Programação: jDoodle, OnLineGDB, Blockly, C++, Assembly, 8-Bit Assembler (tutorial) e Marie.
Calculadora: Da Tabela Verdade ao Circuito Lógico.
Conteúdo:
Evolução dos Sistemas de Computação.
Arquitetura e Organização de Computadores - Stallings (Tópico 2.1).
Atividades:
Comentando sobre a Evolução dos Sistemas de Computação.
A Aplicabilidade e Influência dos Sistemas e os Diversos Meio de Acesso.
Os Computadores Pessoais como facilitadores do acesso à informação.
A influência da evolução das Redes de Comunicação/Computadores e da Internet (Principais Sistemas).
Evoluindo no Hardware do Armazenamento de Bits.
Armazenando um Bit com Relé (Versão 2 - Prototipagem).
Implementando Memória com Flip-Flop Data com o CI 74xx74.
Emulando Flip-Flop Data em Microcontrolador.
Evoluindo na Programação: Do Diagrama de Nassi-Shneiderman às Linguagens Visuais de Programação.
Observando a Arquitetura do Armazenamento de Dados em Memória?
Avaliativa: Em equipes de 3 a 5 alunos, observando o contexto da evolução da programação, selecionar três programas básicos (p.ex. Cálculo da Raízes de Equações do 2º Grau, Ordenação Bubble Sort, ...) e desenvolvê-los com o auxílio de pelo menos duas ferramenta de IA. O Relatório (Roteiro) da atividade deve ter como focos a usabilidade da ferramenta e a inteligibilidade do resultado.
Produtos:
Projeto: Multiplicador de 3 ou 4 bits (quantos bits são necessários para o resultado?).
Conteúdo:
Máquinas Multiníveis Contemporâneas.
Arquitetura e Organização de Computadores - Stallings (Tópicos 2.2 a 2.4).
Elementos da Organização e o Desempenho do Computador.
Arquitetura e Organização de Computadores - Stallings (Tópico 2.5).
Atividades:
Observando a organização geral das Máquinas Multiníveis.
Importância; vantagens e desvantagens; usos; ...
Simulando Máquinas Digitais de Baixo Nível.
Máquina de Nível 0 (Prototipagem) e Máquina de Nível 1.
A Máquina de Nível 0 é um computador ou uma calculadora?
Uma simples máquina digital real de Nível 0 (CPU de 2 Bits).
Microprogramando o K&S para multiplicar por 2 um valor obtido da memória.
Inicialmente vamos usar o K&S Básico para isso, afinal X*2 = X+X.
Repita a operação, usando microprogramação e obtendo o dado (X) de um endereço de memória; p.ex. 5.
Implementando Simulações de Hardware.
O Sequenciador do Computador (a simulação do Clock).
Construindo conhecimento sobre Máquinas Multiníveis Contemporâneas.
Produtos:
Ferramentas para aprendizado com Simuladores: Assembly e UNIX.
Desafio:
Fazer um programa para simular a Execução de Comandos Simples.
No K&S, fazer um microprograma para somar dois valores lidos da memória.
Conteúdo:
Componentes e Funções da UCP.
Arquitetura e Organização de Computadores - Stallings (Tópicos 3.1 e 3.2).
Atividades:
Compreendendo a Função dos Componentes e o Funcionamento Geral da UCP.
Verifique a compatibilidade do Simulador K&S com a Arquitetura de Von Newmann.
Identifique o Fluxo de Funcionamento em uma arquitetura real (Intel 8085).
Entendendo a relação entre o Funcionamento do Computador e o Estágios de Funcionamento da UCP.
Fluxo de Execução vs Ações Executadas.
Qual o motivo do incremento de 4 no PC?
Programe o K&S para executar NOT (B=(B-B*2)-1) e Negação Numérica (N=N-N*2) de dados.
Programe o K&S para gerar (em registrador) a sequência inteira de 130 a 150.
O papel da Unidade de Controle: uma Simulação de Execução.
Visão geral do Processo de Cache no Desempenho da UCP.
Podemos observa a relação entre Ciclo de Instrução e Ciclo de Máquina na CPU de 2 Bits?
Implementando Simulações de Hardware.
ULA Simplificada de 1 Bit e 4 Operações (Multiplexador como Seletor de Instruções).
Produtos:
i3, i5, i7 e i9: entenda a diferença entre os processadores da Intel.
Desafio: Fazer um programa no Simulador K&S (Assembly K&S), para calcular os 10 primeiros números de uma pseudo Sequência de Fibonacci, iniciando em 2.
Conteúdo:
Revisão de conteúdos e 1ª Avaliação.
Atividades:
Evolução dos Sistemas de Computação, Máquinas Multiníveis Contemporâneas e UCP.
Produtos:
Relatório de Produto 1 e/ou Prova Prática 1.
Conteúdo:
Sistema Básico de Comunicação de Dados.
Arquitetura e Organização de Computadores - Stallings (Tópicos 3.3 a 3.5).
Atividades:
Entendendo os Barramentos dos Computadores (um conceito simplista).
Organização, Tipologia Básica e um exemplo prático de um Barramento de E/S em 4 Bits.
Detalhamento da Organização e a relação entre o Computador Real e sua Arquitetura de Comunicação de Dados.
Detalhando as Implementações para Barramentos de Expansão.
Exemplos: Adaptadores, Conexões, Testador 1 e Testador 2.
Programando com uso da Arquitetura de Comunicação.
Enviar caracteres aos dispositivos de saída com 8-Bit Assembler.
Programa: i) mov a, 65; ii) mov b, 0xe8; iii) mov [b], a; iv) hlt.
Compare o programa da simulação como o Hello World em x86.
Implementando Simulações de Hardware (Arduino controlando Displays).
Desafio: Clonar o 00-99 Digital Counter e inserir um terceiro display, permitindo contagens até 999.
Produtos:
Protocolo para Barramento Serial I2C: Semáforos Microcontrolados.
Como funciona a arquitetura de um processador Intel Pentium.
Conteúdo:
Registradores, Memórias e seus Tipos.
Arquitetura e Organização de Computadores - Stallings (4.1, 5.1 e 5.2).
Atividades:
As diferenças entre ROM e RAM.
As diferenças entre DRAM e SRAM (diagrama básico).
Comparação entre RAM e SDD.
Projetando Memórias com Semicondutores.
Adaptando expressões matemáticas para o 8-Bit Assembler.
Observe a prioridade matemática de avaliação da expressão e divida e expressão, em sub expressões de operações atômicas.
Escreva o programa, no 8-Bit Assembler, para executar as sub expressões.
Implementando Simulações de Hardware.
Desafio: Em uma linguagem de programação qualquer (menos C++), implementar em POO uma simulação de Acesso a Dados em RAM, para configuração de 2x1024x16.
Produtos:
Conteúdo:
Desempenho em Cache e Detecção e Correção de Erros.
Arquitetura e Organização de Computadores - Stallings (Tópicos 4.2 e 4.3).
Mapeamento Direto, Mapeamento Associativo, Mapeamento Associativo por Conjunto - Memória Cache.
Atividades:
Observando Diversos Modos de Cache.
Caches mais comuns: Cache de RAM; Memória Virtual (gerenciamento); Web Cache (efeito).
Uso do ParaCache para simular modelos de Cache e Memória Virtual.
Usando Paridade para detectar erros.
Produtos:
Conteúdo:
Coordenação e Comunicação entre os Componentes da UCP.
Arquitetura e Organização de Computadores - Stallings (Tópicos 12.1 e 12.2).
Atividades:
Identificando, nos simuladores, a Arquitetura Geral de uma CPU e o Ciclo Básico de Instrução.
No K&S Programado verifique os Flags de CPU, executando as seguintes operações: 32767+1, 1-2 e 12&65.
No 8-Bit Assembler verifique os Flags de CPU, executando as seguintes operações: 255+1, 1-2 e 12&65.
Identificando os modos de coordenação e de comunicação de dados da CPU Intel 8085.
No diagrama, identifique os barramentos de Dados, de Endereço e de Controle.`
Observe como a estrutura gerencia a geração dos endereços de dados e de endereços.
Programando ULA e Registradores de Flags.
Observe a inicialização e a atualização nos atores "Title" e "Flag".
No ator "ULA", observe como os dados dos Flags são gerados.
Desafios: i) Implementar Flags de Zero e Negativo na CPU de 2 Bits e; ii) Na Simulação de ULA, Implementar geração de Flags para Zero, Negativo e Overflow.
Produtos:
Como funciona a arquitetura de um processador Intel Pentium.
Problema: Como desenvolver programas para acessar diretamente as funções de um microprocessador?
Acessando Registradores de 1 Bit (Minimalista).
Controlando entradas e instruções (Robusto).
Conteúdo:
Revisão de conteúdos e 2ª Avaliação.
Atividades:
CPU, seus componentes e Instruções de Máquina.
Produtos:
Relatório de Produto 2 e/ou Prova Prática 2.
Conteúdo:
Execução de Instruções.
Arquitetura e Organização de Computadores - Stallings (Tópicos 12.3 e 12.4).
Pipeline de Instruções - Estágios, Hazard de Dados e de Controle e Bypassing (Forwarding).
Atividades:
Identificando os elementos da Organização e da Arquitetura de execução das instruções.
Apresentando o Ciclo Básico de Execução das instruções.
Diferentes Ciclos de Execução: dos sem acesso a dados extras e sem interrupção; aos com acesso à dados e interrupções.
A execução "paralela" de instruções: Estrutura de execução e Modelo de execução.
Observando o Trabalho da CPU no 8-Bit e no K&S Programado.
Observe os programas que implementam desvios: Seleções e Laços.
Faça um programa para, a partir de um valor obtido (no primeiro endereço de memória após o programa), armazenar (de forma temporária e no último endereço de memória) a sequência dos 5 números inteiros seguintes a este valor. Após a execução dos programas em seus devidos simuladores, responda:
Quais os registradores de gerenciamento e controle da execução das instruções são "observáveis"?
Existe diferença entre os formatos das instruções e os modos de endereçamento?
Implementando Simulações de Hardware: Executando Instruções por "Programa Monitor".
Produtos:
O que é CPU? Conheça o principal processador de computadores e celulares.
CPU Simples de 2 Bits (sem ciclo de instruções).
Problema: Como gerenciar execução paralela de instruções, sem "múltiplos microprocessadores"?
O que é pipeline no processador? Entenda as vantagens da segmentação de instruções.
Pipeline da CPU - Melhorando o Desempenho e a Eficiência no Processamento de Computadores.
Conteúdo:
Comunicação entre Dispositivos.
Arquitetura e Organização de Computadores - Stallings (Tópicos 7.1 e 7.2).
Atividades:
Explorando os Fundamentos da Comunicação entre Dispositivos.
Pinagem e Sinais de Controle do Z80.
Exemplo de Elementos de Dados e Sinais de Controle (Conectores).
Exemplo de Organização do Barramento para Conexão USB: Conexão entre Dispositivos.
Visão geral do Dispositivo de E/S e um exemplo de trabalho do transdutor: Conversão de Código (Gray).
Comunicação entre Dispositivos Remotos.
Protocolos simplificando a Programação em Barramento Serial.
Exemplo de código de comunicação: A popular Rede Ethernet e a sua Codificação Manchester (Sinal Real).
Entendendo a importância da Pilha de Dados no cálculo do Fatorial Recursivo de um número.
Use teste de mesa para a analise do fatorial interativo e do recursivo em C++.
Analise o fatorial recursivo no programa Assembly, observando o uso da Pilha.
Produtos:
Conteúdo:
Sistema de E/S por Polling, Interrupção e DMA.
Arquitetura e Organização de Computadores - Stallings (Tópicos 7.3 e 7.5).
Atividades:
Explorando os Fundamentos.
Estrutura do Sistema de E/S e dos Módulos de E/S.
E/S por Polling, Interrupção e DMA.
Tratamento de Interrupções (expansão da linha de interrupção), Portas de E/S e Desempenho por DMA (Exemplo: Dell PERC4).
O que é melhor: i) habilitar (ou não) interrupções; ii) deixar o controle de prioridades com o SO/Chipset; ou iii) ambos?
Cite um motivo para um eventual compartilhamento de Portas (espaço de armazenamento) entre dispositivos.
Verificando IRQ, Porta e Memória Compartilhada.
Verificar o uso de IRQs, Portas e Memória Compartilhada no Windows via gerenciador de hardware ou registro (regedit).
Verificar no Linux com lscpu e lspci -v com redirecionamento grep "nome_dispositivo" -A10.
Implementando e verificando Interrupções no Arduino.
Inicie a simulação, acione a chave e verifique: i) O acionamento do DP do display. ii) O acionamento do LED onboard do Arduino.
Analise o código e verifique: Como a interrupção é implementada? Como a interrupção ativa o DP e o LED? Qual o motivo do "delay" entre o DP e o LED.
Produtos:
Conteúdo:
Suporte do Sistema Operacional.
Arquitetura e Organização de Computadores - Stallings (Tópico 8.1).
12 Conceitos de Sistemas Operacionais que todo Estudante de Tecnologia precisa conhecer.
Atividades:
Compreendendo o Conceito e as Funções dos Sistemas Operacionais.
Segmentação, Memória de Troca e Memória Virtual.
Demonstração dos "Modos de Endereçamento".
Exemplo Extremo: Como alterar um programa em tempo de execução.
O SO permite que um programa altere dados de um segmento de memória de outro programa?
É possível que o programa invasor apague os rastros de sua existência? R: Restore + Wipe "Mem" .
Compartilhamento de Arquivos e de Impressoras, com servidor Compartilhado, Dedicado ou Embarcado.
Como automatizar tarefas em um computador? Quais os recursos para isso?
Observando um "SO" gerenciando a execução de programas.
Produtos:
Conteúdo:
Revisão de conteúdos e 3ª Avaliação.
Atividades:
Memória, Barramento e Sistema de E/S.
Produtos:
Relatório de Produto e/ou Prova 3.
MONTEIRO, Mário A. Introdução à Organização de Computadores. 4a ed. LTC, 2001.
STALLINGS, William. Arquitetura e Organização de Computadores: Projeto para Desempenho, 5a ed. Prentice-Hall, 2002.
TANENBAUM, Andrew S. Organização estruturada de computadores. 5a ed. Prentice-Hall, 2006.
Eletrônica Digital (Play List).
Arquitetura e Organização de Computadores - Luiz Barbosa.
Organização de Computadores - Ivan Ricarte.
Organização de Computadores - Marcelo Rebonatto.
Organização e Arquitetura de Computadores - Eliane Fávero.
Arquitetura de Computadores - Fernandez.
Introdução para o iniciante à Linguagem Assembly dos Microprocessadores ATMEL AVR.