Escolar Documentos
Profissional Documentos
Cultura Documentos
computadores
Barramentos
Processador
Memória Suporte à
Bloco de
controle interação com o
usuário
Bloco de
dados Sub-sistema de
Entrada/Saída
Introdução
Barramentos
Processador
Memória
Bloco de
controle
Bloco de
dados Sub-sistema de
Entrada/Saída
- Organização e computadores
- Projeto de sistemas digitais
Introdução
Barramentos
Processador
Memória
Bloco de
controle
Bloco de
dados Sub-sistema de
Entrada/Saída
Programa equivalente
Programa escrito em C escrito em assembly
Compilador
Processador
• Funcionamento básico
1. Buscar instrução na memória (programa) Barramento
de dados
2. Identificar instrução (decodificação)
3. Executar instrução
Barramento de
4. Volta para o passo 1 endereços
Processador
• Bloco de dados (data path, unidade operacional…)
– Executa as instruções que compõem os programas
• Bloco de controle (control path, unidade de controle…)
– Decodifica instruções e gera sinais de controle para a execução
Bloco de controle
Bloco de dados
Processador
• Bloco de dados (data path, unidade operacional…)
– Composto basicamente por ULA, registradores, multiplexadores, tri-states e
barramentos de interconexão
Bloco de controle
Bloco de dados
Processador
• Bloco de controle (control path, unidade de controle…)
– Tipicamente implementado como uma máquina de estados (FSM)
• Registrador de estados e circuitos combinacionais (saídas e próximo estado)
– Controla escrita em registradores, operação da ULA, seletor de
multiplexadores, ativação de tri-states...
Bloco de controle
Bloco de dados
Processador
• Bloco de dados (data path, unidade operacional…)
– Executa as instruções que compõem os programas
• Bloco de controle (control path, unidade de controle…)
– Decodifica instruções e gera sinais de controle para a execução
Titereiro
Bloco de controle
Bloco de dados
Fantoche
Processador
• Propósito geral
– Usados como operandos de instruções assembly
» add r1, r2, r3 (r1 ← r2 + r3)
– Podem ser organizados em bancos de registradores (Register file),
quando em grande quantidade (e.g. 16 ou 32)
• Específicos
– Controlam a execução dos programas e estado do processador
– PC (Program Counter) ou IP (Instruction Pointer)
» Armazena o endereço da instrução a ser executada
– IR (Instruction Register)
» Armazena a instrução sendo executada
– Programador não tem acesso direto
Processador
• Bloco de dados do processador Cleópatra
Write
decoder
Read
decoder
Abstração
• Eliminação de detalhes
– Exemplos:
• Ao programar em C, características do processador como a
quantidade/largura de registradores são completamente abstraídas
• Ao projetar um somador ripple carry, os CIs que serão utilizados na
implementação (e.g. CMOS, TTL) são completamente abstraídos
• Usado para facilitar o entendimento/projeto de sistemas
complexos
• Aplicado tanto para hardware quanto para software
• Níveis de abstração
– Quanto mais alto o nível de asbtração, mais detalhes são
eliminados
– Quanto mais baixo o nível de asbtração, menos detalhes são
eliminados
Abstração (software)
• Linguagens de alto nível abstração
– C, C++, C#, Python, Java…
– Conjunto de comandos (e.g. if/else, while, for, case, …)
– Portabilidade
• Um mesmo programa pode ser executado em qualquer processador
• Linguagem de baixo nível abstração
– Assembly (linguagem nativa do processador)
• Conjunto de instruções (e.g. soma, subtração, acesso à memória )
• Mnemônicos associados às instruções
– add: addition (adição)
– sub: subtraction (subtração)
– lb: load byte (leitura da memória)
– Tipicamente 3 letras no máximo
• Simploria, com poucos recursos (baseadas operações básicas)
• Programação demorada e de difícil depuração
• Portabilidade altamente limitada
– Cada processador tem seu próprio conjunto de instruções (ISA)
– Um mesmo programa NÃO pode ser executado em qualquer processador
• Tipicamente usada para criar código compacto e eficiente
Abstração (hardware)
• Detalhes de tecnologia de implementação abstraídos do
esquemático
Conforme o projeto avança em
direção à implementação, o nível
de abstração diminui e detalhes
abstraídos começam a ser
relevantes (e.g. CMOS ? TTL ?,
tensão de alimentação,
frequência de operação,...)
Write
decoder
Read
decoder
Programação
• Ferramentas básicas
– Compilador
• Traduz um programa escrito em uma linguagem de alto nível em
um programa equivalente utilizando o conjunto instruções
assembly (ISA) do processador alvo
• Alta complexidade
– Análise sintática de comandos (for, case,…) com várias partes
– Otmização de código (tamanho e velocidade)
– Montador (assembler)
• Gera código binário (linguagem de máquina) a partir de
instruções assembly
– Para cada instrução do programa assembly será gerado um código binário
• Baixa complexidade
– Ligador (linker)
• Cria um código executável ligando (“juntando”) o código binário do
programa do usuário com o código binário das funções chamadas no
programa (e.g. printf() e scanf())
Programação
• Compilação
Código C
Compilador
Código assembly
Programação
• Montagem
Código assembly
Montador
Código binário
(cada linha Conteúdo
corresponde a armazenado na
uma instrução do memória RAM
código assembly)
Programação
body:
jn end ; Se m - i < 0 salta para end
sta m ; m = m - i
lda i ;
add DOIS ;
sta i ; i = i + 2
lda n ;
add UM ;
sta n ; n = n + 1
jmp test
end:
hlt
Codificação
Programação binária
Acesso à memória
15-12 11-8 7-0
Acesso à memória
15-12 11-8 7-0