MI1022806 2020 1 AULA07

De MediaWiki do Campus São José
Revisão de 16h07min de 23 de fevereiro de 2021 por Douglas (discussão | contribs) (→‎Exercícios)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

CPU - Unidade de Controle

A CPU é o "cérebro" do processador. E possui as funções de
- Interpretação e execução dos programas da memória principal;
- Controle dos demais componentes.


Fig 145 MI1022806.jpeg


Componentes
- Registradores - armazenam temporariamente dados e instruções.
- Unidade Lógica e Aritmética (ULA)- “processa” os dados e atualiza os registradores.
- Unidade de Controle (UC) - “dispara” cada um das etapas de execução da instrução.

ULA

É o “núcleo” da CPU.

  • Executa as operações de processamento de dados. Podem ser diferentes para cálculos com inteiros e ponto flutuante.
  • Ativa bits especiais (flags), como resultado da operação. Ex: operação nula (bit Z), operação negativa (bit N), overflow, etc.
  • Está conectada a um grupo de registradores pelo barramento interno, formando o caminho de dados.
  • Pode-se utilizar um conjunto de conjunto de ULAs para a execução paralela de instruções.
Fig 146 MI1022806.jpeg

Registradores

Um banco de registradores são pequenas unidades de memória com alta velocidade.

  • Mais rápidas que as memórias principal e cache.
  • Utilizam o barramento interno da CPU.

Armazenamento temporário de dados, instruções e endereços, em utilização pelo processador.

  • Possuem diferentes funções, mas têm um uso bem definido, dentro da arquitetura.
  • Possibilitam operações de leitura e escrita.

Registradores de uso geral

  • Utilizados para armazenar dados que serão processados ou produzidos pela ULA. Ex: AX-DX, AC, R0-R13.
  • Coletivamente são chamados conjunto de registradores de dados (data register file).

Registradores de controle

  • Utilizados no controle das operações pela CPU e nas trocas de informações com a MP. Ex: PC, IR, MAR, MBR.
  • Alguns desses são invisíveis aos programadores.

Registradores (Processador 8088/8086)

  • CPU possui 14 registradores de 16 bits visíveis.
  • 4 registradores de uso geral:
    • AX (Acumulador): armazena operandos e resultados dos cálculos aritméticos e lógicos.
    • BX (Base): armazena endereços indiretos.
    • CX (Contador): conta iterações de loops ou especifica o n° de caracteres de uma string.
    • DX (Dados): armazena overflow e endereço de E/S.
    • Podem ser usados como registradores de 8 bits: Ex: AH e AL (byte alto e byte baixo de AX).
Fig 147 MI1022806.jpeg
  • 4 registradores de segmento:
    • CS (Segmento de Código): contém o endereço da área com as instruções de máquina em execução.
    • DS (Segmento de Dados): contém o endereço da área com os dados do programa. Geralmente aponta para as variáveis globais do programa.
    • SS (Segmento de Pilha): contém o endereço da área com a pilha. Que armazena informações importantes sobre o estado da máquina, variáveis locais, endereços de retorno e parâmetros de subrotinas.
    • ES (Segmento Extra): utilizado para ganhar acesso a alguma área da memória quando não é possível usar os outros registradores de segmento. Ex: transferências de bloco de dados.
  • 5 registradores de offset:
    • PC (Program Counter) ou IP (Instruction Pointer): usado em conjunto com o CS para apontar a próxima instrução.
    • SI (source index) e DI (destiny index): utilizados para mover blocos de bytes de um lugar (SI) para outro (DI) e como ponteiros para endereçamento (junto com os registradores CS, DS, SS e ES).
    • BP (Base Pointer): usado em conjunto com o SS para apontar a base da pilha. Similar ao registrador BX. Usado para acessar parâmetros e variáveis locais.
    • SP (Stack Pointer): usado em conjunto com o SS para apontar o topo da pilha.
  • 1 registrador de estado do processador (PSW) :
    • Registrador especial composto por sinalizadores (flags) que ajudam a determinar o estado atual do processador. Coleção de valores de 1 bit. Apenas 9 bits são utilizados:
    • 4 mais utilizados: ZF - zero; CF - carry ("vai um“) ou borrow (“vem um”); SF - sinal; e OF - overflow ou underflow.
Fig 148 MI1022806.jpeg

Organização dos Registradores – Família Intel

Fig 149 MI1022806.jpeg

Unidade de Controle

  • Gerencia os recursos disponíveis e o fluxo de dados entre os componentes.
  • Controla a execução das instruções pela CPU:
    • Busca as instruções na memória principal.
    • Decodificação das instruções (geração dos sinais de controle correspondentes).
    • Seqüenciamento das operações.
    • Disparo da execução (envio dos sinais de controle).
  • Representa uma das partes mais difíceis de ser projetada em um computador, devido à complexidade dos processadores.

Estrutura

Fig 150 MI1022806.jpeg

Ciclo de Busca-Execução (fetch-execute)

  1. Busca a instrução (memória → IR);
  2. Altera PC para indicar a próxima instrução;
  3. Decodifica a instrução atual;
  4. Determina o endereço e busca o operando na memória (quando necessário);
  5. Executa a operação (sinais de controle);
  6. Armazena os resultados;
  7. Repete passos anteriores.
Fig 151 MI1022806.jpeg
Fig 152 MI1022806.jpeg

Categorias de Instruções

  • Movimentação processador – memória: Transferência de dados entre CPU e memória principal.
  • Movimentação processador - E/S: Transferência de dados entre CPU e módulos de E/S.
  • Processamento de dados: Realiza alguma operação lógica ou aritmética nos dados.
  • Operações de controle: Alteração na seqüência de execução de instruções. Ex: desvios condicionais e não-condicionais (jump)
  • Qualquer combinação das operações acima

Máquina Hipotética (32 bits)

Fig 153 MI1022806.jpeg


Fig 154 MI1022806.jpeg

Interrupções

Mecanismos pelos quais outros componentes podem interromper a seqüência normal do processamento.

  • Visa melhorar a eficiência do processamento.


  • Fontes de interrupções mais comuns:
    • Programa (Software): gerada por alguma condição que ocorra como resultado da execução de uma instrução. Ex: overflow, divisão por zero, instrução ilegal etc.
    • Timer: gerada pelo processamento interno do relógio (timer). Usado em sistemas sistemas multi-tarefa preemptivos para executar certas funções a intervalos regulares de tempo.
    • E/S: gerada pelo módulo de E/S para sinalizar a conclusão uma operação ou a ocorrência de uma situação de erro.
    • Falha de Hardware: gerada na ocorrência de uma falha. Ex: queda de energia, erro de paridade de memória

Controle do fluxo do programa

Fig 155 MI1022806.jpeg

Ciclo de interrupção:

  • Acrescentado ao ciclo de instrução.
  • Processador verifica se há interrupção: Indicado por um sinal de interrupção.
  • Se não há interrupção, busca a próxima instrução na memória.
  • Se houver interrupção pendente:
    • Suspende a execução do programa corrente.
    • Salva o contexto na pilha.
    • Configura PC com o endereço de início da rotina de rotina de tratamento da interrupção (interrupt handler routine).
    • Processa a interrupção.
    • Restaura o contexto.
    • Continua a execução do programa interrompido.

Ciclo de Instruções com Interrupção


Fig 156 MI1022806.jpeg

Múltiplas interrupções

Desabilitar interrupções:

  • O processador ignora futuras interrupções enquanto processa uma interrupção.
  • Interrupção são manipuladas na seqüência em que elas acontecem.


Definir prioridades:

  • Interrupções de baixa prioridade são interrompidas por interrupções de alta prioridade
  • Quando a interrupção de mais alta prioridade foi processada, o processador retorna à interrupção anterior.

Execução sequencial:

Fig 157 MI1022806.jpeg


Execução aninhada:

Fig 158 MI1022806.jpeg

Sinal de clock

  • Utilizado para atender as relações de tempo requeridas nas operações (sincronismo).
  • Novas operações básicas são iniciadas em um novo ciclo de clock.
  • A execução de uma instrução consome um certo nº de ciclos de clock.
    • Varia de acordo com o nº de operações básicas requeridas e o tempo de execução de cada uma delas.
  • O tamanho do ciclo de clock é um dos fatores que determinam o desempenho de um processador.
< tamanho do ciclo ⇒ < tempo de execução ⇒ > nº de instruções/seg.

Exercícios

[1] Quais as principais funções da CPU?

[2] Quais os principais componentes da CPU e como eles se comunicam?

[3] O que é a ULA?

[4] Qual a diferença entre os registradores de uso geral e registradores de controle?

[5] Quantos registradores a família 8088/8086 possuem? Qual o tamanho?

[6] Fale-me sobre o registrador PSW.

[7] No que ser refere a UC - qual a diferença entre: "controlar a execução de uma instrução" e "executar a instrução"?

[8] Como se dá o ciclo de busca e execução de uma instrução?

[9] Quais as categorias de instruções?

[10] O que são "interrupções" e para que servem?

[11] O que muda no ciclo de busca e execução de uma instrução em microcontroladores com "interrupções"?

[12] Como funcionam as múltiplas interrupções?

[13] O que significa: "< tamanho do ciclo ⇒ < tempo de execução ⇒ > nº de instruções/seg".

[14] O que é um barramento de computador?

[15] Qual a diferença entre um barramento serial e um paralelo?

[16] Explique o que são linhas: de dados, de endereços e de controle?

[17] Quando um dispositivo ou módulo do sistema deseja enviar ou requisitar dados para outro, como ele deve proceder?

[18] Cite barramentos computacionais típicos?

[19] Qual a diferença entre um barramento ser dedicado ou ser multiplexado?

[20] Como se dá um processo típico de arbitragem em um barramento do tipo PCI?

[21] Qual a diferença entre o barramento de cache e o barramento de memória? (ora, chace também é uma memória!)

[22] Para que servem barramentos de E/S?

[23] Vocês saberiam dizer que tipos de barramento tem o PC/Notebook que vocês usam? (não abram!)



Icone voltar.png Icone menu.png Icone prox.png