Microprogramação II
Alinne Corrêa
([email protected])
•
Micro/Macroinstruções
•
Memória Cache / Pilha
•
Montagem e Execução de programas
2 16/04/2010 Microprogramação II – Alinne Corrêa
Microinstruções
•
São instruções primitivas que codificam um único
ciclo de máquina a ser executado no caminho de
dados da CPU.
•
Uma microinstrução é definida pelos valores dos
sinais de controle que atuam na unidade operativa
•
A execução de uma instrução do processador pode
então ser realizada através de uma sequência de
microinstruções.
16/04/2010 Microprogramação II – Alinne Corrêa 3
Macroinstruções
•
São instruções de mais alto nível, compostas por
um certo número de microinstruções
•
Na técnica de microprogramação, cada instrução
oferecida
pela
arquitetura,
que
passa
a
ser
chamada
de
macroinstrução
,
é
na
realidade
executada
por
uma
seqüência
de
instruções
primitivas,
extremamente
simples,
chamadas
microinstruções
.
16/04/2010 Microprogramação II – Alinne Corrêa 4
Macroinstruções
•
A seqüência de microinstruções que executa uma
macroinstrução forma uma
microrotina
.
•
A execução de uma macroinstrução consiste na
chamada de uma microrotina, feita pela unidade de
controle.
•
As microinstruções da microrotina executam as
operações básicas associadas à macroinstrução.
16/04/2010 Microprogramação II – Alinne Corrêa 5
Macroinstruções
16/04/2010 Microprogramação II – Alinne Corrêa 6
• Asmicrorotinas encontram-se armazenadas na memória de microprograma.
• Quando o código da macroinstrução é armazenado no registrador de (macro)instrução, o seqüenciador interpreta este código e determina o endereço de entrada da microrotina que executa aquela macroinstrução.
• O seqüenciador fornece, a cada ciclo de clock, o endereço da próxima microinstrução a ser executada. Após o acesso à microinstrução, ela é armazenada no registrador de microinstrução.
• A execução de uma microinstrução envolve o acesso da microinstrução na memória de microprograma.
• Uma nova microinstrução é executada a cada ciclo de clock. Quando a execução de uma microrotina é concluída, uma nova macroinstrução é acessada na memória principal e armazenada no registrador de (macro) instrução, e iniciada a execução de uma nova microrotina.
Memória Cache
•
Problema:
▫ A CPU é mais rápida do que a memória principal. A memória principal é um gargalo no desempenho da CPU. A cada requisição, a CPU perde desempenho esperando que a memória atenda a sua requisição.
•
Solução:
▫ Combinar uma memóriagrande e lenta (memória principal) com uma memóriapequena e rápida(memória cache). Esta combinação, feita de maneira apropriada, responde como se fosse uma única memória grande e relativamente rápida.
16/04/2010 Microprogramação II – Alinne Corrêa 7
Memória Cache
•
É uma área de
armazenamento temporária,
onde
os
dados
frequentemente
acedidos
são
armazenados para acesso rápido.
•
Memória mais rápida interna ao chip da CPU.
•
Baseia-se nos princípios de localidade
▫ Referências de memória em um período curto de tempo tendem a acessar regiões de memória vizinhas
16/04/2010 Microprogramação II – Alinne Corrêa 8
Memória Cache
•
Características:
▫ Memórias de alta velocidade utilizadas como ligação entre o processador e a memória principal.
▫ Mantém dados de uso freqüente.
▫ Permiteganho de performancecom economia de acesso a memória principal.
▫ Utilizadas em todos os sistemas atuais.
▫ Divisãoentre oarmazenamento dos dados e o armazenamento de informaçõespara que os dados sejam localizados e validados (tag, valid bit).
16/04/2010 Microprogramação II – Alinne Corrêa 9
Memória Cache
•
Princípio da Localidade:
▫ Espacial:
Probabilidade que o próximo endereço a ser referenciado se encontre próximo ao último endereço da referência mais recente à memória.
Ex: busca de instruções de um programa geralmente é feita em PC+1 ▫ Temporal:
Probabilidade que um endereço referenciado recentemente, brevemente seja referenciado novamente.
Ex: execução de instruções dentro de um loop
16/04/2010 Microprogramação II – Alinne Corrêa 10
Memória Cache
•
Indicadores Estatísticos:
▫ Hit:
Busca de uma informação na cache é realizada comacertos(taxa de acerto = hit rate)
▫ Miss:
Busca de uma informação na cache é realizada comfaltas, sendo necessário o acesso a memória principal (taxa de falta = miss rate).
▫ Tempo médio de acesso:
th: tempo de acesso com acerto ph: facção de acessos com acerto
tm: tempo de acesso com falta
pm: facção de acessos com falta (pm = 1 – ph) tp: penalidade de falta (tp= tm – th)
tacesso = ph x th + pm x tm
= th + pm x tp
Memória Cache
•
Funcionamento:
▫ Sempre que a CPU vai buscar um dado ou instrução na memória,acessa inicialmente a cache.
▫ Se a instrução ou dado estiver na cache (acerto), e então é transferida emalta velocidade para CPU.
▫ Se a instrução (dado) não estiver na cache (falta), o sistema interrompe a execução do programa vaitransferir a instrução da MP para a cache. ▫ Atransferêncianão é somente da instrução desejada, masdela e de um grupo
subseqüente,na pressuposição de que as instruções do grupo serão requeridas logo em seguida (localidade espacial), aumentando a taxa de acertos. ▫ Para acache cumprir seu papel, é necessário que hajamais acertos que faltas,
sendo que essa razão tem que ser cada vez maior, pois as perdas comfaltas
•
Funcionamento:
16/04/2010 Microprogramação II – Alinne Corrêa 13
•
Modo de Endereçamento
▫ Mapeamento Direto ▫ Totalmente Associativo ▫ Associativo por Conjunto
16/04/2010 Microprogramação II – Alinne Corrêa 14
Memória Cache
•
Modo de Endereçamento
▫ Mapeamento Direto
Cada posição da memória principal só pode ser mapeadapara uma posição da memória cache.
16/04/2010 Microprogramação II – Alinne Corrêa 15
Memória Cache
•
Modo de Endereçamento
▫ Totalmente Associativo
Cada posição da memória principal pode ser mapeada em qualquer posição da memória cache.
16/04/2010 Microprogramação II – Alinne Corrêa 16
Memória Cache
•
Modo de Endereçamento
▫ Associativo por Conjunto
Cada posição da memória principal pode ser mapeada emN posições da cache.
16/04/2010 Microprogramação II – Alinne Corrêa 17
Memória Cache
•
Políticas de Atualização
▫ Write-Through (escrita em ambas) ▫ Write back (escrita somente no retorno) ▫ Write once (escrita uma vez) ▫ Write Through:
Cada escrita em uma palavra da cache acarreta uma escrita igual na palavra correspondente da MP.
Assegura validade permanente e igual o conteúdo de ambas as memórias. ▫ Write back:
Não realiza atualizações simultâneas, mas somente quando o bloco foi substituído e se ocorreu alteração.
Memória Cache
•
Políticas de Atualização
▫ Write once
Apropriada para sistemas multi CPU/cache que compartilham o mesmo barramento.
Permite o controlador da cache escrever atualizando o bloco da MP sempre que o bloco correspondente da cache for atualizado pela primeira vez.
Atualiza ambos os blocos, bem como alerta os demais componentes que compartilham o barramento único.
16/04/2010 Microprogramação II – Alinne Corrêa 19
Memória Cache
•
Algoritmos de Substituição
▫ Least Recently Used – LRU (o que não é usado há mais tempo) ▫ F1F0 (Just-in, Just-out) – Fila
▫ Least-Frequently Used –LFU (o que tem menos referência) ▫ Escolha Aleatória
16/04/2010 Microprogramação II – Alinne Corrêa 20
Memória Cache
•
Algoritmos de Substituição
▫ Least Recently Used (LRU)
O sistema escolhe para ser substituído o bloco que está há mais tempo sem ser acessado
Trata-se do bloco que a CPU não utiliza há mais tempo
▫ F1F0 (Just-in, Just-out)
O primeiro que chegar é o primeiro a ser atendido.
O sistema escolhe o bloco queestá há mais tempo armazenado na cache, independente de estar sendo usado ou não com frequência pela CPU.
16/04/2010 Microprogramação II – Alinne Corrêa 21
Memória Cache
•
Algoritmos de Substituição
▫ Least-Frequently Used (LFU)
O sistema escolhe para o bloco que tem tidomenos acessos por parte da CPU.
Trata-se do bloco que possui menos referências
▫ Escolha Aleatória
Trata-se de escolher aleatoriamente um bloco para ser substituído, independente da sua situação no conjunto.
16/04/2010 Microprogramação II – Alinne Corrêa 22
Memória Cache
•
Níveis da Cache
▫ Necessidade de aumento da velocidade da memória cache; ▫ Aceleração do tempo de resposta
▫ Minimizar impacto no custo da memória ▫ Criação dos níveis de memória
Diferem na relação tamanho x desempenho
Memória Cache
•
Níveis:
▫ L1 (memórias internas ao processador):
Uma pequena porção de memória estática presente dentro do processador
Geralmente tem entre 16KB e 128KB
▫ L2 (memórias internas ou externas ao processador): :
Contém muito mais memória que o cache L1
Mais um caminho para que a informação requisitada não tenha que ser procurada na lenta memória principal
Um dos elementos essenciais para um bom rendimento do processador ▫ L3 (memórias externas ao processador e existem em poucos
procesadores):
•
Tamanho
▫ A definição da faixa de tamanho (capacidadede armazenamento) de uma cache depende:
Uma pequena porção de memória estática presente dentro do processador
Capacidade de armazenamento da MP;
Razão acertos/falhas aceitaveis;
Tempo de acesso da MP e da MC;
Custo da MP e MC;
Natureza dos programas em execução.
16/04/2010 Microprogramação II – Alinne Corrêa 25
•
Dispositivo de armazenamento que guarda as
informações em uma disposição, onde o
último a
entrar
é o
primeiro a sair .
•
Possuem duas operações:
▫ Push
Insere os dados para armazenamento ▫ Pop
Retira os dados da memória
•
A maioria dos computadores utiliza a memória
principal para representar pilhas
16/04/2010 Microprogramação II – Alinne Corrêa 26
Pilha
16/04/2010 Microprogramação II – Alinne Corrêa 27
Montagem e Execução de Programas
•
Conceitos
▫ Linguagem de máquina:
Primeira e mais primitiva linguagem de computador
Linguagem que o computador entende diretamente e pode ser diretamente executada pelos circuitos do processador (pelo hardware). ▫ Linguagem de montagem:
Linguagem em que os códigos numéricos foram substituídos por mnemônicos (palavras ou símbolos), como, por exemplo, LOAD = carregar e ADD = somar.
▫ Linguagem de programação:
É um conjunto de ferramentas, regras de sintaxe e símbolos ou códigos que nos permitem escrever programas de computador.
16/04/2010 Microprogramação II – Alinne Corrêa 28
Montagem e Execução de Programas
•
Linguagem de Máquina
▫ Instruções eram escritas diretamente na linguagem do computador, uma longa série de 0's e 1's.
▫ As séries representam códigos de instruções e outros representam os dados que serão processados
▫ Cada instrução escrita pelo programador será individualmente executada
▫ Cada instrução do programa corresponderá uma ação do computador
A relação é portanto 1 para 1 - uma instrução do programa corresponde a uma operação do computador.
16/04/2010 Microprogramação II – Alinne Corrêa 29
Montagem e Execução de Programas
•
Linguagem de Máquina
▫ Desvantagens:
Difícil de ser escrito sem que se cometessem muitos erros, em um processo longo
Processo caro
Difícil de ser entendido por outros programadores que futuramente viessem a trabalhar na manutenção do programa.
Montagem e Execução de Programas
•
Linguagem de Montagem
▫ Solução para o problema da linguagem de máquina.
▫ Os códigos numéricos foram substituídos por mnemônicos (palavras ou símbolos), como, por exemplo, LOAD = carregar e ADD = somar,
▫ Essa linguagem simbólica recebeu o nome de Assembly Language (Linguagem de Montagem).
▫ Os programadores bastam decorar mnemônicos para as instruções e definir nomes para as referências dos endereços.
Ex: NOME representando o local onde seriam armazenados os nomes
16/04/2010 Microprogramação II – Alinne Corrêa 31
Montagem e Execução de Programas
•
Linguagem de Montagem
▫ O processo de tradução da linguagem de montagem para a linguagem de máquina é realizado por um programa chamado Assembler (Montador).
▫ O programa Assembler lê cada instrução escrita em linguagem Assembly e a converte em uma instrução equivalente em linguagem de máquina.
▫ Processo ainda considerado lento e complexo.
▫ Diversas linguagens de programação foram desenvolvidas, buscando afastar-se do modelo centrado no computador.
16/04/2010 Microprogramação II – Alinne Corrêa 32
Montagem e Execução de Programas
•
Linguagem de Programação
▫ Mais simples de programar e entender
▫ Mais rápidas e eficientes, levando a programas mais enxutos, com menos instruções, menos dependente do computador-alvo, mas que processassem com boa eficiência
▫ Primeiras linguagens:
FORTRAN (1957) – manipulação de fórmulas
ALGOL (1958) – manipulação de algoritmos
COBOL (1959) – processamento comercial
PASCAL (década de 60, 70) – alto nível estruturada
C (década de 80) – com suporte a objetos
16/04/2010 Microprogramação II – Alinne Corrêa 33
Montagem e Execução de Programas
•
Linguagem de Programação
▫ Vantagens x Desvantagens:
16/04/2010 Microprogramação II – Alinne Corrêa 34
Vantatgens Desvantagens Facilita o trabalho do programador Elevado desempenho Reduz a necessidade de conhecer o hardware da máquina Lentas Consome espaço em memória
Montagem e Execução de Programas
•
Tradução:
▫ Um programa escrito por um programador (chamado código fonte), em uma linguagem de alto nível.
▫ Conjunto de instruções que é clara para programadores, mas não para computadores, pois os computadores entendem única e exclusivamente suas linguagens nativas, as linguagens de máquina. ▫ O processo de tradução do programa escrito em uma linguagem
simbólica para a linguagem de máquina é chamado Compilação.
Montagem e Execução de Programas
•
Montagem:
▫ Traduz um programa escrito em linguagem Assembly em um programa equivalente em linguagem de máquina, possível de ser executado pelo computador
No processo de montagem, ocódigo
fonte (programa em linguagem
simbólica escrito pelo programador)
é examinado, instrução por
instrução e é feita a tradução, gerando ocódigo que será executado (código objeto)
•
Compilação:
▫ É o processo de tradução de um programa escrito em linguagem de alto nível para código em linguagem de máquina. ▫ É um processo análogo ao da montagem (verificação / análise do
código fonte, resolução das referências de memória, reserva de espaço em memória e conversão para código de máquina binário) ▫ Linguagens compiladas:
C
Pascal
COBOL
16/04/2010 Microprogramação II – Alinne Corrêa 37
•
Compilação:
▫ O código fonte é analisado (análise léxica, sintática e semântica), ▫ É gerado um código intermediário
▫ São construídas tabelas de símbolos, alocam-se as áreas de memória para variáveis.
▫ São atribuídos os registradores a serem utilizados. ▫ Geração do código objeto em linguagem binária de máquina
16/04/2010 Microprogramação II – Alinne Corrêa 38
Montagem e Execução de Programas
•
Montagem x Compilação:
▫ O que diferencia a compilação do processo de montagem é sua maior complexidade.
▫ No processo de montagem, há uma relação de 1:1, ou seja, cada instrução do código fonte resulta em uma instrução de máquina. ▫
▫ Na compilação a relação é múltipla, cada instrução do código fonte gerando várias instruções de máquina.
16/04/2010 Microprogramação II – Alinne Corrêa 39
Montagem e Execução de Programas
•
Interpretação
▫ Um programa para ser executado precisa primeiro ter sido convertido para código objeto pelo compilador.
▫ Esse processo é o mais largamente utilizado, porém não é o único. ▫ Todo o processo de conversão é efetuado em tempo de execução e
imediatamente executado.
16/04/2010 Microprogramação II – Alinne Corrêa 40
Montagem e Execução de Programas
•
Interpretação
▫ Cada comando é lido, verificado, convertido em código executável e imediatamente executado, antes que o comando seguinte seja sequer lido.
▫ Linguagens interpretadas:
BASIC
Linguagens de construção de macros do word, Acces
16/04/2010 Microprogramação II – Alinne Corrêa 41
Montagem e Execução de Programas
•
Interpretação x Compilação
16/04/2010 Microprogramação II – Alinne Corrêa 42
Interpretação Compilação
Tempo de execução Cada vez que o programa for executado haverá compilação, o que aumenta o
tempo de execução
Tempo de execução do programa é reduzido, porque todos os passos
preliminares foram previamente cumpridos.
Consumo de memória O interpretador é um programa geralmente grande e que precisa permanecer na memória durante todo o tempo que durar a execução do programa, o que aumenta o
consumo de memória.
O compilador é carregado e fica na memória apenas durante o tempo de compilação, depois é descarregado, onde o consumo de memória é
mais reduzido.
Repetição de Interpretação Um programa é compilado apenas uma vez, logo cada programa terá que ser interpretado toda vez que for ser executado, levando a
um maior consumo de tempo no método de interpretação
A tradução do código do loop se faz uma única vez, em tempo de compilação , levando a um menor
consumo de tempo no método de compilação.
Desenvolvimento de programas e depuração de erros
cada comando é interpretado e executado individualmente, a relação entre código fonte e executável é mais direta e o efeito da
execução (certa ou errada) é direta.
A identificação de erros durante a fase de execução fica sempre difícil, pois não há mais relação entre comandos do código fonte e instruções do executável.