ARQUITETURA DE COMPUTADORES Nível da Microarquitetura

Propaganda
ARQUITETURA DE COMPUTADORES
Nível da Microarquitetura
Prof.: Agostinho S. Riofrio
Nível de Microarquitetura
Agenda
1.
2.
3.
4.
5.
6.
7.
8.
9.
Introdução
Caminho de Dados
ULA
Registradores
Temporização
Operação de Memória
Controle de Microinstrução
Áreas de Memória
Memória Cache
Nível de Microarquitetura
Introdução
Sua função é implementar o nível ISA (Instruction
Set Architecture) através de um microprograma que
controlará a lógica digital da CPU.
Este nível é mais comumente encontado em
processadores CISC.
Nível de Microarquitetura
Introdução
Microprograma em ROM para buscar, decodificar e executar as
instruções IJVM.
− Cada instrução IJVM é uma função a ser chamada pelo
programa principal.
− Programa principal é loop simples, sem fim que determina
a próxima função chamada, executa a função, determina a
próxima função, executa a função e assim por diante.
− Instruções IJVM: curtas, normalmente um ou dois
campos. O primeiro campo é sempre o OPCODE.
− O microprograma tem um conjunto de variáveis, acessadas
por todas as funções denominado estado do computador.
Nível de Microarquitetura
Caminho de Dados
Nível de Microarquitetura
Caminho de Dados
Possui a ULA, suas entradas e saídas.
Conjunto de registradores de 32 bits acessíveis apenas
pelo microprograma
6 linhas de seleção da função da ULA porém com apenas 16
funções úteis
Números negativos representados em complemento de dois
Entrada de dados da ULA:
•
Sempre do registrador H (Holding)
•
Qualquer um dos outros registradores, excluindo o
H e MAR
Nível de Microarquitetura
Caminho de Dados
Saída da ULA: Alimenta o deslocador
Deslocador:
•
SLL8 (Shift Left Logical)
•
SRA1 (Shift Right Arithmetic)
É possível ler e escrever em um mesmo registrador no
mesmo ciclo de relógio.
Nível de Microarquitetura
Tabela de seleção de funções da ULA
Nível de Microarquitetura
Registradores
MAR (Memory Address Register): Porta de endereçamento de
memória (32 bits)
MDR (Memory Data Register): Porta de dados de memória (32
bits), leitura ou escrita na memória.
PC (Program Counter): indica a posição de memória(endereço)
que contém a próxima instrução a ser executada.
MBR (Memory Byte Register) : Porta de dados da memória (8
bits), apenas leitura da memória
SP (Stack Pointer): Aponta para o topo da pilha
Nível de Microarquitetura
Registradores
LV (Local Variable): Aponta para a base das variáveis locais
dentro da pilha
CPP (Constant Pool Pointer): Aponta para a base da área de
constantes.
TOS
OPC
H (Holding Register)
Nível de Microarquitetura
Temporização do Caminho de Dados
Diagrama de temporização de um ciclo do caminho de dados.
Nível de Microarquitetura
Subciclos da temporização
•Os sinais de controle são ajustados (∆w)
•Os registradores são carregados no barramento B (∆x)
•Operação da ULA e deslocador (∆y)
•Propagação do resultado pelo barramento C de volta aos
registradores (∆z)
Nível de Microarquitetura
Operação de Memória
Memória física orientada por Bytes (total de 4GB)
Os registradores MAR/MDR são utilizados para ler
palavras de dados no nível ISA => 32 bits
Os registradores PC/MBR são uilizados para ler o
programa executável no nível ISA => 8 bits
Nível de Microarquitetura
Microinstruções
29 sinais para controlar a via de dados:
− 9 sinais para escrita nos registradores
− 9 sinais para leitura dos registradores
− 8 sinais para controlar a ULA e deslocador
− 2 sinais para indicar leitura ou escrita via MAR/MDR
− 1 sinal para indicar busca de instrução via PC/MBR
Nível de Microarquitetura
Microinstruções
Nível de Microarquitetura
Microinstruções
ADDR: Contém o endereço da possível próxima microinstrução
JAM: Determina como a próxima microinstrução é selecionada
ALU: Funções da ULA e Deslocador
C: Seleção de qual registrador é carregado do barramento C
MEM: Funções da memória
B: Seleção de qual registrador é lido no barramento B
Nível de Microarquitetura
Controle de
Microinstrução
Nível de Microarquitetura
Controle de Microinstrução
O Seqüenciador determina quais sinais de controle devem ser
habilitados em cada ciclo, responsável por seguir uma seqüência
de operações necessárias para a execução de uma única instrução
ISA:
1. Determina o estado de cada sinal de controle do sistema
2. Explicita o endereço da próxima microinstrução a ser
executada
A Memória de Armazenamento de Controle contém todo o
microprograma (512 palavras de 36 bits).
Nível de Microarquitetura
Controle de Microinstrução
As microinstruções NÃO são armazenadas seqüencialmente na
memória de controle e cada microinstrução especifica sua
sucessora.
•MPC (MicroProgram Counter): Especifica o endereço da
memória de controle
•MIR (MicroInstruction Register): Saída de dados da memória
de controle
Nível de Microarquitetura
Subciclos da Temporização
Durante o subciclo 1, iniciado pela borda descendente do
relógio, MIR é carregado a partir do endereço contido em MPC
no instante em questão.
Durante o subciclo 2, os sinais de MIR se propagam e o
barramento Bé carregado a partir do registrador selecionado
Durante o subciclo 3, a ULA e o deslocador funcionam e
produzem um resultado estável.
Durante o subciclo 4, os valores do barramento C, dos
barramentos de memória e da ULA tornam-se estáveis.
Na borda ascendente do relógio os registradores são
carregados a partir do barramento C,..........
Nível de Microarquitetura
Modelo de Memória
Memória vista de duas formas:
− Vetor de 4G bytes
− Vetor de 1G palavras, cada palavra 4 bytes
Endereços implícitos que fornecem a base para um ponteiro. As
instruções só podem acessar a memória indexando a partir
destes ponteiros.
Endereços absolutos não são visíveis no nível ISA.
Nível de Microarquitetura
Conceito de Pilha
Enquanto A está ativo
Após A chamar B
Após B chamar C
Após C e B
retornarem e A
chamar D
Nível de Microarquitetura
Áreas da Memória
1. Conjunto de constantes:
− Não pode ser escrita por um programa .
− Consiste de constantes, strings e ponteiros para outras
áreas de memória.
− CPP: Aponta sempre para a base desta área (endereço da
primeira palavra da área de constantes).
Nível de Microarquitetura
Áreas da Memória
2. Quadro de variáveis Locais:
− Não inclui a pilha de operandos
− Utilizada para a alocação de variáveis durante a execução de
um procedimento.
− A pilha de operandos está localizada exatamente acima do
quadro de variáveis locais.
− Argumentos da chamada do procedimento armazenados no
começo do quadro de variáveis locais.
− LV: Possui o endereço da primeira posição do quadro de
variáveis locais.
Nível de Microarquitetura
Áreas de Memória
3. Pilha de Operandos:
− A pilha não excede um certo tamanho, garantido pelo
compilador Java.
− A área da pilha de operandos é alocada acima da área de
variáveis locais
− SP: aponta para o topo da pilha de operandos => valor
alterado durante a execução do programa.
4. Área de Métodos:
− Região de memória que contém o programa.
Nível de Microarquitetura
Áreas de Memória
Nível de Microarquitetura
Conjunto de Instruções IJVM
Nível de Microarquitetura
Microinstrução
Nível de Microarquitetura
Memória Cache
•
Registradores
– Memória de trabalho da CPU para armazenamento
temporário de instruções e dados;
– Registradores de propósitos gerais, vários registradores de
propósitos específicos ( PC, SP, Flags, etc.);
- Volátil
•
Memória Primaria
– Em comparação com os registradores da CPU, tempo de
acesso maior, porém sua capacidade de armazenamento é bem
maior;
– Deve ser suficientemente grande para armazenar os
programas em execução e seus respectivos dados
– Até 70 vezes mais lenta que os registradores
- Volátil
Nível de Microarquitetura
Memória Cache
• Memória Secundária
– Não volátil
– Memória de transbordo (Memória Virtual)
- Grande capacidade de armazenamento
– Tempo de acesso bem maior que o da memória primária
Nível de Microarquitetura
Programas
•Os programas tendem a reutilizar dados e instruções que
usaram recentemente.
•Também aplica-se a dados mas não tão fortemente quanto em
instruções.
Nível de Microarquitetura
Principio da Localidade
− Localidade Espacial
Localizações de memória com endereços numericamente
similares a uma localização de memória recentemente
acessada provavelmente serão acessadas em um futuro
próximo;
− Localidade Temporal
Localizações de memória recentemente acessadas são
acessadas novamente. Isto ocorre, por exemplo com
localizações proximas do topo de uma pilha, ou com
intruções dentro de um laço.
Nível de Microarquitetura
Memória Cache
•Armazena cópia das regiões da memória primária mais
freqüentemente usadas pela CPU, num curto intervalo de
tempo;
• Memória cache não pode ser acessada pelo programador
(mesmo em assembly);
• Computadores com vários níveis hierárquicos de cache são
comuns atualmente, tipicamente os níveis mais altos ficam no
mesmo circuito integrado da CPU;
Nível de Microarquitetura
Memória Cache de Instruções
Cache de Instruções
– A próxima instrução a ser executada é retirada do cache de
instruções;
– não estando ali presente, nova seqüência é carregada no
Cache de Instruções;
– Caso o Cache de Instruções contenha aninhamentos inteiros
de laços com grande número de repetições, serão evitados
inúmeros acessos à memória
Nível de Microarquitetura
Funcionamento da Memória Cache
•A cache e a memória primária são dividas em blocos com um número
fixo de palavras de memória (nível mais alto)
•O endereço de memória é então divido em duas partes:
– O endereço do bloco (às vezes, chamado de título, ou tag)
– A posição da palavra dentro do bloco (offset)
•Todo pedido de acesso a memória é feito primeiramente a cache.
•Caso o dado não seja encontrado na cache, o bloco solicitado será
trazido da memória primária para a cache. Este evento de chama de
falha.
Nível de Microarquitetura
Memória Cache
Cache de Mapemanto Direto
• Cada bloco da memória só pode ser colocado em uma posição
da memória
Valid: Indica se exitem dados válidos no bloco
Tag: Consiste de endereço de 16 bits que identifica ao bloco da
memória primáriade onde vieram os dados
Data: Contém uma cópia dos dados na memória
Nível de Microarquitetura
Memória Cache
Nível de Microarquitetura
Memória Cache
Cache Completamente Associativo
• Cada bloco pode ser alocado em qualquer osição da cache
• Posição definida pela estratégia de substituição
Cache Associativo de Conjunto
• Um bloco da memória pode ser deslocado para um único
determinado conjunto ( o qual conta com um certo número
de blocos), dentro do qual o bloco pode ser colocado em
qualquer posição
Nível de Microarquitetura
Vantagens e Desvantagens
Mapeamento Direto
Vantagens: Simplicidade de construção
Desvantagens: Possível Ineficiência devido a falta de
flexibilidade
Completamente Associativo
Vantagens: Total flexibilidade
Desvantagens: Complexidade e custo de implementação
Associativo de Conjunto
Vantagens e Desvantagens: Meio termo entre as duas
abordagens anteriores
Nível de Microarquitetura
Substituição de Bloco
•Mapeamento direto: Não há decisão a ser feita, pois
cada bloco é direcionado para um bloco de cache
•Mapeamento Completamente associativo ou de conjunto:
- Menos recentemente usado(Least Recently Used):
Registra-se os acessos aos blocos e se retira do
cache o menos usado recentemente.
Nível de Microarquitetura
Estratégia de Gravação
– Write-Through: As informações são gravadas no cache e na
memória inferior
Vantagens
• Mais fácil de Implementar
• Falha de leitura não causa gravação
• Nível Inferior sempre coerente
Desvantagem
• Gravações sempre demoram o tempo do nível inferior,
mesmo em caso de acerto
Nível de Microarquitetura
Estratégia de Gravação
– Write-Back: As informações são gravadas apenas no cache.
A gravação na memória ocorrerá apenas quando houver
substituição do bloco.
Vantagens
• Usa menos largura de Banda da Memória
• Poupa Energia por usar menos HW
Desvantagens
• Precisa controlar atualização da Memória
• Falha de leitura pode causar gravação
• Memória fica inconsistente com a cache
Nível de Microarquitetura
REFERÊNCIAS BIBLIOGRÁFICAS
[1] TANEMBAUM, Andrew S. Organização Estruturada de Computadores. Quinta
Edição. Editora Pearson Prentice Hall, São Paulo, 2007.
[2] HENNESSY, John L.; Patterson, David A.; Organização e Projeto de
Computadores – 2ª Edição 2000; ED LTC.
[3] MONTEIRO, M. A. Introdução à organização de computadores. Quarta Edição.
Editora LTC, Rio de Janeiro, 2002.
Download