Buscar

IAC-INF1029-Vol5-Computadores com Conjunto Reduzido de Instruções

Prévia do material em texto

1
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Introdução à Arquitetura de 
Computadores
Anderson Oliveira da Silva
Ph. D. Ciências em Informática
Engenheiro de Computação
anderson@inf.puc-rio.br
Departamento de Informática
PUC-Rio
2
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Parte II –
Unidade Central de Processamento
Computadores com Conjunto Reduzido de Instruções
– Características da Execução de Instruções
» Operações, Operandos, Chamadas de Procedimentos
– Uso de um Grande Banco de Registradores
» Janelas de Registradores, Variáveis Globais, Registradores x Cache
– Otimização de Registradores baseada em Compiladores
» Estratégias para maximizar o uso dos registradores
– Arquitetura RISC
» Principais características da arquitetura RISC
» CISC x RISC
– Pipeline no RISC
» Pipeline com instruções regulares
» Otimização de pipeline
3
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Unidade Central 
de Processamento
4 Computadores com Conjunto 
Reduzido de Instruções
Durante o projeto de um processador, os projetistas 
precisam determinar as características do conjunto de 
instruções e dos recursos técnicos para otimizar a 
execução das instruções:
– Número de instruções
– Tamanho das instruções (bytes)
– Modos de endereçamento
– Número de registradores de uso geral
– Quantidade de memória cache
– Número de estágios do pipeline
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
5 Computadores com Conjunto 
Reduzido de Instruções
Características de alguns processadores CISC e RISC:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
Computadores com Conjunto 
Complexo de Instruções 
(CISC)
Computadores com Conjunto 
Reduzido de Instruções 
(RISC)
Modelo
IBM
370/168
VAX
11/780
Intel
80486
SPARC
MIPS
R4000
Ano 1973 1978 1989 1987 1991
Número de 
instruções
208 303 235 69 94
Tamanho da 
instrução (bytes)
2-6 2-57 1-11 4 4
Modos de 
endereçamento
4 22 11 1 1
Número de 
registradores de 
uso geral
16 16 8 40-520 32
6 Computadores com Conjunto 
Reduzido de Instruções
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Por que os projetistas dos 
computadores CISC e RISC criaram 
arquiteturas com características tão 
diferentes?
Essa diferença torna uma arquitetura 
mais eficiente do que a outra para 
executar os programas construídos 
pelos programadores?
7 Computadores com Conjunto 
Reduzido de Instruções
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Para respondermos estas perguntas, 
precisamos conhecer um pouco mais 
sobre a execução das instruções e sobre 
a construção dos programas...
8 Computadores com Conjunto 
Reduzido de Instruções
Características da execução de instruções:
– Os aspectos de interesse computacional são:
– Operações efetuadas: determinam as funções a serem 
efetuadas pelo processador e a sua interação com a memória.
– Operandos usados: os tipos de operandos e a frequência de 
uso determinam a organização da memória para fazer o 
armazenamento e os modos de endereçamento para prover o 
acesso aos operandos.
– Sequência da execução: determina a organização e o 
controle do pipeline.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
9 Computadores com Conjunto 
Reduzido de Instruções
Características da execução de instruções:
– O estudo de (PATTERSON E SEQUIN, 1982a) verificou a frequência 
relativa de ocorrência de várias instruções das linguagens de 
programação de alto nível (Pascal e C) em uma série de programas:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Ocorrência
Instruções de máquina
ponderada
Referências à memória 
ponderada
Pascal C Pascal C Pascal C
Atribuição 45% 38% 13% 13% 14% 15%
Loop 5% 3% 42% 32% 33% 26%
Chamada 15% 12% 31% 33% 44% 45%
IF 29% 43% 11% 21% 7% 13%
GOTO - 3% - - - -
Outro 6% 1% 3% 1% 2% 1%
(PATTERSON E SEQUIN, 1982a)
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
10 Computadores com Conjunto 
Reduzido de Instruções
Características da execução de instruções:
– O estudo de Patterson e Sequin (1982a) também analisou a 
frequência dinâmica de ocorrência de classes de variáveis.
Porcentgem dinâmica de operandos
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Pascal C Média
Constante Inteira 16% 23% 20%
Variável escalar 58% 53% 55%
Array / Estrutura 26% 24% 25%
(PATTERSON E SEQUIN, 1982a)
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
11 Computadores com Conjunto 
Reduzido de Instruções
Características da execução de instruções:
– As chamadas e os retornos de procedimento são um aspecto 
dos programas em alto nível.
Argumentos de procedimentos e variáveis locais
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Porcentagem de chamadas de 
procedimento executadas 
com:
Compiladores, interpretadores 
e editores de texto
Pequenos programas não 
numéricos
> 3 argumentos 0-7% 0-5%
> 5 argumentos 0-3% 0%
> 8 palavras de argumentos e 
escalares locais
1-20% 0-6%
> 12 palavras de argumentos e 
escalares locais
1-6% 0-3%
(PATTERSON E SEQUIN, 1982a)
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
12 Computadores com Conjunto 
Reduzido de Instruções
Conclusões:
– Vários grupos que analisaram resultados semelhantes 
concluíram que a tentativa de criar uma arquitetura com um 
conjunto de instruções parecido com as linguagens de 
programação de alto nível não é a estratégia de um projeto 
mais eficaz.
– As linguagens de programação de alto nível podem ser mais 
bem suportadas por técnicas de otimização de desempenho 
clássicas, que não dependem da arquitetura do conjunto de 
instruções.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
13 Computadores com Conjunto 
Reduzido de Instruções
Três elementos caracterizam a arquitetura RISC:
– Uso de um grande número de registradores.
» O objetivo é otimizar a referência a operandos (na maioria, escalares).
» O desempenho pode ser melhorado com redução de referências à 
memória, à custa de mais referências a registradores.
– Atenção cuidadosa ao projeto de pipeline de instruções.
» Requer o uso de técnicas para minimizar os impactos gerados pelas 
instruções de desvio e de chamadas de procedimento.
– Conjunto de instruções com foco no alto desempenho.
» As instruções devem ter custos previsíveis (medidos em tempo de 
execução, tamanho de código e dissipação de energia).
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
14 Computadores com Conjunto 
Reduzido de Instruções
Uso de um grande banco de registradores
– A razão pela qual o armazenamento em registradores é 
indicado é que esse é o dispositivo de armazenamento mais 
rápido disponível, mais rápido que a memória principal e que 
a cache.
– Duas abordagens básicas são possíveis: 
» Abordagem em software: depende do compilador para maximizar o 
uso de registradores.
» Abordagem de hardware: disponibiliza mais registradores para que 
mais variáveis possam ser guardadas em registradores por mais tempo.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
15 Computadores com Conjunto 
Reduzido de Instruções
Abordagem de HW: Janelas de registradores
– Sobreposição das janelas de registradores:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
16 Computadores com Conjunto 
Reduzido de Instruções
Abordagem de HW: Janelas de registradores
– Organização do buffer circular de janelas sobrepostas:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores,Willian Stallings, 10a edição - Editora Pearson - 2018 
17 Computadores com Conjunto 
Reduzido de Instruções
Abordagem de HW: Variáveis globais
– São atribuídas a posições de memória pelo compilador e 
todas as instruções de máquina que referenciam essas 
variáveis usam operandos referenciados em memória.
– Uma alternativa é incorporar um conjunto de registradores 
globais no processador. 
– Esses registradores seriam em número fixo e estariam 
disponíveis para todos os procedimentos. 
– Um esquema uniforme de numeração pode ser usado para 
simplificar o formato da instrução.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
18 Computadores com Conjunto 
Reduzido de Instruções
Grande banco de registradores versus Cache
– O banco de registradores, organizado em janelas, age como 
um pequeno buffer para guardar variáveis.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Grandes bancos de registradores Cache
Todas as variáveis locais escalares Variáveis locais recentemente usadas 
Variáveis individuais Blocos de memória
Variáveis globais assinaladas pelo compilador Variáveis globais recentemente usadas
Salvar/restaurar baseados na profundidade de 
aninhamento do procedimento
Salvar/restaurar baseado no algoritmos de 
atualização da cache
Endereçamento de registrador Endereçamento de memória
Múltiplos operandos endereçados e acessados em 
um ciclo
Um operando endereçado e acessado por ciclo
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
19 Computadores com Conjunto 
Reduzido de Instruções
Grande banco de registradores versus Cache
– Banco de registradores baseado em janelas:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
Operando da 
instrução referencia 
um registrador (R) 
que fornece acesso 
direto ao operando.
20 Computadores com Conjunto 
Reduzido de Instruções
Grande banco de registradores versus Cache
– Cache:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
Operando da instrução 
referencia um endereço 
de memória (A) cuja 
base é usada para 
referenciar a memória 
cache (rótulo) para 
determinar se o dado 
está presente (hit) ou 
ausente (miss).
No caso de hit, o dado 
é acessado e copiado 
para a unidade destino.
No caso de um miss, a 
cache precisará ser 
atualizada antes de 
fornecer o dado, que 
será então copiado 
para a unidade destino.
21 Computadores com Conjunto 
Reduzido de Instruções
Arquitetura com conjunto reduzido de instruções
– As características mais comuns, encontradas em todos os 
computadores com conjunto reduzido de instruções, são:
» Uma instrução por ciclo.
» Operações registrador para registrador.
» Modos de endereçamento simples.
» Formatos de instruções simples.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
22 Computadores com Conjunto 
Reduzido de Instruções
Arquitetura com conjunto reduzido de instruções
– Um ciclo de máquina é definido como o tempo necessário 
para obter dois operandos dos registradores, executar uma 
operação da ALU e armazenar o resultado em um registrador.
» Com instruções simples de ciclo único, há pouca ou nenhuma 
necessidade de microcódigo.
– A maioria das operações é registrador para registrador, 
com apenas operações simples LOAD e STORE acessando a 
memória. 
» Esse recurso de projeto simplifica o conjunto de instruções e, portanto, 
também a unidade de controle.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
23 Computadores com Conjunto 
Reduzido de Instruções
Arquitetura com conjunto reduzido de instruções
– Usa modos de endereçamento simples baseados em 
acesso direto à memória.
» Esse recurso de projeto também simplifica o conjunto de instruções e a 
unidade de controle.
– Adota formatos de instruções simples.
» Em geral, apenas um ou alguns poucos formatos são usados.
» O tamanho da instrução é fixo e ajustado dentro do limite da palavra. 
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
24 Computadores com Conjunto 
Reduzido de Instruções
Arquitetura com conjunto reduzido de instruções
– Outra característica é que a posição de campos, sobretudo o 
opcode, é fixa. 
– Os principais benefícios são:
» Com campos fixos, a decodificação de opcode e o acesso a 
registradores de operandos podem ocorrer ao mesmo tempo. 
» Formatos simples simplificam a unidade de controle (economia de 
energia).
» A leitura de instruções é otimizada, porque são obtidas unidades do 
tamanho da palavra. 
» Uma única instrução não ultrapassa os limites da página de memória.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
25 Computadores com Conjunto 
Reduzido de Instruções
Características CISC versus RISC
– 8 RISC, 5 CISC e 2 RISC com características CISC.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
26 Computadores com Conjunto 
Reduzido de Instruções
Características CISC versus RISC
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
CISC RISC
Programas em linguagem de 
máquina pequenos
Programas em linguagem de 
máquina grandes
Menos espaço de memória 
para armazenamento de 
programas
Mais espaço de memória para 
armazenamento de programas
Unidade de controle mais 
complexa
Unidade de controle mais 
simples
Mais consumo de ciclos de 
máquina por instrução
Menos consumo de ciclos de 
máquina por instrução
Mais consumo de energia para 
execução de instrução
Menos consumo de energia 
para execução de instrução
27 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Pipeline com instruções regulares
– A maioria das instruções é do tipo registrador para registrador 
e o ciclo de instruções possui os dois estágios a seguir:
» I: busca da instrução.
» E: execução. 
– Para operações de carregar e armazenar:
» I: busca da instrução.
» E: execução. 
» D: memória. 
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
28 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Pipeline com instruções regulares
– Os efeitos do pipeline:
Execução sequencial Temporização do pipeline em dois estágios
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
No exemplo de pipeline com dois estágios, podemos destacar dois pontos:
1. O pipeline sofre atraso quando a instrução requer acesso a um endereço de memória;
2. Para evitar a bolha no pipeline, a instrução NOOP é adicionada após a instrução de 
desvio condicional Branch X. 
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
29 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Pipeline com instruções regulares
– Os efeitos do pipeline:
Temporização do pipeline em três estágios Temporização do pipeline em quatro estágios
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Em ambos os exemplos, a instrução NOOP é utilizada para (i) suprir os atrasos das instruções 
que fazem acesso a endereço de memória; e (ii) evitar a bolha no pipeline provocado pelo 
desvio condicional (Branch X).
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
30 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline
– O desvio atrasado (delayed branch) é uma maneira de 
aumentar a eficiência do pipeline.
– Faz uso de um desvio que não tem efeito até depois da 
execução da instrução seguinte (por isso o termo atrasado). 
– A posição da instruçãoimediatamente depois do desvio é 
referida como slot de atraso (delay slot).
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
31 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline
– Desvio Normal e Desvio Atrasado:
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
Instruções serão carregadas no pipeline Instruções não serão carregadas no pipeline Instruções não serão carregadas no pipeline
32 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline
– Desvio Normal – Pipeline Tradicional:
» Quando o JUMP é executado, deve-se descarregar a pipeline com a 
instrução ADD rA,rB.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
33 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline
– Desvio Atrasado – Pipeline RISC com adição de NOOP:
» Quando o JUMP é executado, não há necessidade de descarregar a 
pipeline com a instrução NOOP.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
34
Pipeline no RISC: Otimização de pipeline
– Desvio Atrasado – Instruções invertidas:
» Quando o JUMP é executado, a instrução ADD 1,rA, que foi invertida com 
o JUMP, não é descarregada.
Computadores com Conjunto 
Reduzido de Instruções
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
35 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline
– O load atrasado (delayed load) é uma tática semelhante que 
pode ser usada em instruções LOAD.
– O registrador é bloqueado pelo processador. 
– O processador então continua a execução do fluxo de instruções 
até que alcance uma instrução que precisa desse registrador.
» Se a instrução seguinte depender do resultado do load, então, pode-se 
colocar uma instrução NOOP entre as instruções para que o load possa ser 
completado antes do uso do registrador.
– Se o compilador puder rearranjar as instruções para que um 
trabalho útil possa ser feito enquanto ocorre leitura dentro do 
pipeline, a eficiência será aumentada.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
36 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline (compilador)
– O desdobramento de loop (loop unrolling) visa a replicar o 
corpo de um loop em um número de vezes chamado de fator 
de desdobramento (u) e fazer a iteração pelo passo u em vez 
de pelo passo 1.
– Desdobrar pode melhorar o desempenho:
» Reduzindo a sobrecarga do loop.
» Aumentando o paralelismo de instruções.
» Melhorando a localidade de registradores, cache de dados ou TLB.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
37 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline (compilador)
– Exemplo de desdobramento de loop (u = 2):
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br
Fonte: Arquitetura e Organização de Computadores, 
Willian Stallings, 10a edição - Editora Pearson - 2018 
38 Computadores com Conjunto 
Reduzido de Instruções
Pipeline no RISC: Otimização de pipeline (compilador)
– Exemplo de desdobramento de loop (u = 2):
» A sobrecarga do loop é cortada pela metade pois duas iterações são 
executadas antes do teste e o desvio é feito no topo do loop.
» O paralelismo de instrução aumenta pois a segunda atribuição pode ser 
efetuada enquanto os resultados da primeira estão sendo armazenados e 
as variáveis do loop estão sendo atualizadas.
» Se os elementos do array forem atribuídos a registradores, a otimização é 
ainda maior pois a[i] e a[i+1] são usados duas vezes no corpo do loop.
Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br

Mais conteúdos dessa disciplina