Escolar Documentos
Profissional Documentos
Cultura Documentos
e Sistemas Operativos
Informática de Gestão, ESTiG/IPB
José Rufino
2020/2021
Parte AC4
Operação Básica
de uma CPU
Objetivos
• esquema genérico
de um sistema de
von Neumann →
• a execução dos
programas assenta
num ciclo fetch-
decode-execute
4
4.1 Introdução
- Componentes Básicos da CPU
5
4.1 Introdução
- Componentes Básicos da CPU
6
4.1 Introdução
- Componentes Básicos da CPU
• unidade lógico-aritmética (ALU):
– executa operações lógicas (e.g., comparações, ...) ...
– ... e aritméticas (e.g., adições, multiplicações, ...) ...
– ... às ordens da unidade de controlo
– em geral, tem duas entradas e uma saída
– as operações afetam um registo de estado (e.g., overflow)
• unidade de controlo:
– fetch da instrução referenciada pelo registo Program Counter
– decode da instrução, incluindo fetch de operandos
– instrui/programa a ALU para a execução (execute) da instrução
– monitoriza o registo de estado e salvaguarda os resultados
7
4.1 Introdução
- Componentes Básicos da CPU
• relógio interno:
– uma CPU tem um relógio que serve para sincronizar as
atividades dos seus componentes e medir a sua duração
– esse relógio oscila com uma certa frequência (MHz, GHz)
– o tempo de ciclo (ou período) é o recíproco da frequência
(um relógio de 800MHz tem um tempo de ciclo de 1.25ns)
– a duração de uma operação de movimentação de dados ou
computacional corresponde a um certo número e ciclos
– quanto maior for a frequência, mais curtos serão os ciclos;
mas isso não significa que um programa corra + rápido
• há outros fatores a considerar !! (ver slide a seguir)
8
4.1 Introdução
- Tempo de Execução de um Programa
9
4.1 Introdução
- Organização Básica da Memória Principal
10
4.2 MARIE: Introdução
11
4.2 MARIE: Introdução
Características Básicas:
• representação de números em complemento para 2
• programas armazenados em memória de 4k palavras
• tamanho de palavra fixo (16 bits)
• palavras de dados com 16 bits
• instruções com 16 bits
– 4 bits para o código da operação (opcode)
– 12 bits para especificar um endereço
• unidade lógico-aritmética (ALU) de 16 bits
• 7 registos para controlo e movimentação de dados
12
4.2 MARIE: Introdução
Registos:
• acumulador (AC) – registo de 16 bits que armazena
um resultado de uma operação ou um operando de
uma instrução com 2 operandos
• registo de endereço de memória (MAR) – registo
de 12 bits que armazena um endereço de memória
(de uma instrução ou do operando de uma instrução)
• registo de buffer de memória (MBR) – registo
de 16 bits que armazena os dados antes/depois
de uma escrita/leitura para/da memória
13
4.2 MARIE: Introdução
Registos (cont.):
• contador de programa (PC) – registo de 12 bits que
guarda o endereço da próxima instrução a ser executada
• registo de instrução (IR) – registo de 16 bits que guarda
uma instrução imediatamente antes da sua execução
• registo de entrada de dados (InREG) – registo de 8 bits
que armazena dados lidos de um dispositivo de entrada
• registo de saída de dados (OutREG) – registo de 8 bits
que guarda dados a enviar para um dispositivo de saída
14
4.2 MARIE: Introdução
16
4.2 MARIE:
- Arquitetura do Conjunto de Instruções
• formato de uma
instrução MARIE:
17
4.2 MARIE:
- Arquitetura do Conjunto de Instruções
• padrão de bits da instrução LOAD 003 no registo IR:
20
4.3 MARIE: Assemblagem
21
4.3 MARIE: Assemblagem
• considere-se o programa
apresentado à direita
– notar o uso de diretivas (HEX e
DEC) que especificam a base de
representação das 3 constantes
• durante o passo 1, produz-
se a tabela de símbolos e o
código máquina parcial:
22
4.3 MARIE: Assemblagem
checkpoint: exercícios
(MAR.13+MAR.14).a,
MAR.23.a e MAR.24.a
→ 32 23
4.4 MARIE: Processamento de Instruções
fetch
execute
decode
checkpoint: exercícios (MAR.13+MAR.14).b, MAR.23.b e MAR.24.b 25
4.5 Formatos e Tipos de Instruções
29
4.6 Modos de Endereçamento
• endereçamento indexado:
– a instrução contém um endereço de uma posição de memória
– um registo (implícito ou explícito) guarda um deslocamento
– endereço efetivo dos dados = endereço + deslocamento
– NOT 008 ==> negar o valor cujo endereço é 008 + R1
• exemplo: LOAD 800, com R1 como registo de índice
checkpoint: exercícios
ME.13*, ME.14*
30
4.7 Encadeamento de Instruções (ILP)
• algumas CPUs dividem o ciclo fetch-decode-execute
em vários passos ou estágios de pequena dimensão
• estes estágios podem, muitas vezes, ser executados
em paralelo, com o intuito de aumentar o throughput
– throughput : nº de instruções concluídas por u.t.
• esta execução em paralelo é denominada de encadea-
mento de instruções ou instruction-level pipelining (ILP)
• ILP é similar a uma linha de produção por estágios ...
• ... com diferentes estágios decorrendo em simultâneo ...
• ... e com cada estágio alimentando o próximo estágio
31
4.7 Encadeamento de Instruções (ILP)
• exemplo:
– ciclo fetch-decode-execute é dividido nos seguintes passos
1. ler a instrução 4. ler os operandos
2. descodificar o opcode 5. executar a instrução
3. calcular os endereços 6. guardar o resultado
efetivos dos operandos
– existe um pipeline com k=6 estágios, Sk, um por passo p
37
Referências
38