O cumprimento da disciplina busca dar ao aluno, ao final do semestre, condições de:
1. Dominar conceitos fundamentais de estrutura, representação e projeto de sistemas digitais combinacionais e sequenciais.
2. Dominar uma linguagem de descrição de hardware (HDL) a ponto de usá-la para criar representações corretas de sistemas combinacionais e seqüenciais simples.
3. Compreender a relação entre organização e arquitetura de sistemas digitais computacionais.
4. Compreender o modelo de programa armazenado de von Neumann e sua relação com a organização de hardware de computadores modernos.
5. Apreender os conceitos básicos de programação de processadores em linguagens de montagem e objeto.
6. Dominar as fundamentações teóricas e práticas subjacentes ao emprego de linguagens de montagem, bem como a relação destas com o código objeto associado a cada uma destas linguagens e seu efeito sobre as estruturas de hardware dos respectivos processadores.
7. Distinguir bloco de dados e bloco de controle de um computador, quanto à função, composição e construção.
8. Entender os conceitos envolvidos no emprego de arquiteturas multiprocessadas através de conceitos básicos relacionados ao tema e exploração de arquiteturas comerciais e acadêmicas existentes.
1.1 Introdução
1.1.1 Circuitos Digitais Combinacionais X Sequenciais
1.1.1.1 Comportamento Combinacional e Comportamento Sequencial
1.1.1.2 Componentes Sequenciais Primitivos
1.1.1.2.1 Capturador de 0
1.1.1.2.2 Capturador de 1
1.1.1.2.3 Osciladores
1.1.1.2.4 Bit de RAM sem controle
1.1.2 Componentes Sequenciais Básicos
1.1.2.1 Latch - Função, Estrutura e Representação
1.1.2.2 Flip-flop - Função, Estrutura e Representação
1.1.2.3 Contadores - Função, Estrutura e Representação
1.1.3 Representações de Circuitos Sequenciais
1.1.3.1 Modelagem Sequencial - Processos
1.1.3.2 Sensibilidade ao Nível e Transição de Sinais
1.2 Circuitos Digitais Sequenciais Síncronos
1.2.1 O Estilo de Projeto Síncrono - Princípios e Pressupostos
1.2.2 Registradores
1.2.3 Contadores e Registradores Deslocadores Síncronos
1.2.4 Máquinas de Estado Finitas
1.2.4.1 Modelo Estrutural Genérico de uma Máquina de Estados Finita
1.2.4.2 Modelos Puros de Mealy e Moore
1.2.5 E se os Pressupostos do Modelo Síncrono não forem Seguidos?
1.2.5.1 Perigos ("Hazards") e Corridas
1.2.5.2 Circuitos Sequenciais Não-síncronos
1.2.5.1.1 Sistemas Multi-síncronos (GALS, mesócrono, etc.)
1.2.5.1.2 Sistemas Assíncronos
2.1 Organização arquitetural de unidades centrais de processamento
2.1.1 Conjunto de Instruções
2.1.1.1 Características
2.1.1.2 Tipos de Operandos
2.1.1.3 Tipos de Operações
2.1.2 Modos de Endereçamento e Formatos
2.1.2.1 Endereçamento
2.1.2.2 Formato de Instrução
2.2 Modelo de von Neumann - o Computador de Programa Armazenado
2.3 Um Estudo de Caso de Processador
2.3.1 Especificação da Arquitetura de um Processador
2.3.1.1 Registradores para o Programador em Linguagem de Montagem
2.3.1.2 Conjunto de Instruções
2.3.1.3 Formatos de Instrução
2.3.1.4 Modos de Endereçamento
2.3.1.5 Linguagem de Montagem
2.3.2 Programação em Linguagem de Montagem
2.3.3 Conversão de Descrição em Linguagem de Alto Nível para Linguagem de Montagem
2.3.4 Particionamento e Implementação de Especificação
2.3.4.1 O Bloco de Dados - Operadores, Memórias, Conexões
2.3.4.2 O Bloco de Controle - Máquina de Estados e Microinstruções
2.3.4.3 Otimização de Desempenho do Processador
2.3.5 Prototipação do Processador em FPGA ("Field Programmable Gate Array")
3.1 Modelo de von Neumann versus modelo Harvard
3.2 Arquiteturas baseada em acumulador versus arquiteturas load-store baseada em banco de registradores
3.3 Comparações de estruturas de máquinas RISC e CISC
3.3.1 Registradores acessíveis ao programador em linguagem de montagem
3.3.2 Conjunto de instruções
3.3.3 Formatos de instrução
3.3.4 Modos de endereçamento
3.3.5 Linguagem de montagem
4.1 Conceitos Básicos
4.2 Organização de múltiplos processadores
4.3 Multiprocessadores simétricos
4.4 Tendências de projeto em circuito integrado (MPSoCs)
4.5 Arquiteturas de processadores comerciais