arquiteturas risc - zottesso.com.br - risc... · em abordagens cisc, com poucos registradores...

32
1 Arquiteturas RISC (Reduced Instructions Set Computers)

Upload: dodan

Post on 06-Mar-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

1

Arquiteturas RISC (Reduced Instructions Set

Computers)

Page 2: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

2

RISC

INOVAÇÕES DESDE O SURGIMENTO DO COMPU-TADOR DE PROGRAMA ARMAZENADO (1950)

!   O conceito de família: desacoplamento da arquitetura de uma máquina da sua implementação. Ex.: IBM System /360 e DEC PDP

!   Unidade de Controle Microprogramada: Sugerida por Wilkes – 1951 -, facilitou a implementação da UC e deu suporte ao conceito de família

!   Memória Cache: sua inserção melhorou dramaticamente as diferenças de velocidade entre processador e memória principal

!   Pipelining: Meio através do qual foi introduzido o conceito de paralelismo dentro do modelo naturalmente sequencial de um programa de máquina

Page 3: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

3

RISC

INOVAÇÕES DESDE O SURGIMENTO DO COMPU-TADOR DE PROGRAMA ARMAZENADO (1950)

!   Multiprocessadores: Sistemas com modelos variados que fazem uso de diversos processadores para aumentar o desempenho dos sistemas

!   A esta lista deve ser adicionada uma das mais importantes inovações: Reduced Instruction Set Computers - RISC

Page 4: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

4

RISC

RISC – PRINCIPAIS CARACTERÍSTICAS

!   Conjunto limitado e simplificado de instruções de máquinas

!   Grande número de registradores de uso geral e utilização de tecnologia de compiladores para otimizar o uso destes registradores

!   Ênfase na otimização do pipeline de instruções

Page 5: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

5

RISC

CARACTERÍSTICAS DA EXECUÇÃO DAS INSTRUÇÕES

!   Com o uso crescente dos computadores a complexidade do software cresceu e o seu custo também

!   Em resposta, a industria desenvolveu linguagens de programação de alto nível mais complexas e poderosas (FORTRAN, C, ADA)

!   Com isto, os programas passaram a ser escritos de forma mais concisa, com ênfase nos detalhes associados ao problema e fazendo uso da programação estruturada

!   Resultado: Gap Semântico – distância entre os recursos de programação que a linguagem de alto nível oferece e os recursos de programação que a máquina dispõe

Page 6: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

6

RISC

CARACTERÍSTICAS DA EXECUÇÃO DAS INSTRUÇÕES

!  Sintomas do Gap Semântico:

Ø Execução ineficiente

Ø Tamanho de programa em linguagem de máquina excessivamente grande

Ø Complexidade na construção de compiladores

Page 7: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

7

RISC

CARACTERÍSTICAS DA EXECUÇÃO DAS INSTRUÇÕES

!   Na tentativa de diminuir o Gap Semântico, os projetistas passaram a oferecer máquinas que continham:

Ø Um grande conjunto de instruções

Ø Dezenas de modos de endereçamento

Ø Vários comandos de linguagem de alto nível implementados em hardware

!   No entanto, estudos sobre como se dá o comportamento dinâmico de um programa em execução sugerem uma abordagem em outro sentido

Page 8: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

8

RISC

INTERAÇÃO CPU/MEMÓRIA

!   A análise do comportamento de um programa nos seus aspectos estático (código fonte) e dinâmico (em execução) pode dar indicações de como ocorre a interação entre cpu e memória

!   Diversos estudos feitos em programas escritos em linguagem de alto nível demonstram que – Tabela 2:

Ø Comandos de atribuição ocorrem com elevada frequência

Ø Comandos condicionais (if, loop) também predominam, sugerindo que um mecanismo adequado de controle de sequência deve exitir no nível de máquina

Page 9: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

9

RISC

Page 10: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

10

RISC

•  INTERAÇÃO CPU/MEMÓRIA

!   Quando se analisou, no entanto, o consumo de tempo de execução dos comandos em um programa, um estudo de Patterson – 1982 – determinou que – Tabela 3:

Ø  As colunas 2 e 3 da Tabela 3 mostram as medidas ponderadas do tempo real gasto por cada instrução

Ø  Os resultados sugerem que chamadas e retornos de procedimentos são as operações que consomem mais tempos de execução

Page 11: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

11

RISC

Page 12: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

12

RISC

USO DE OPERANDOS

!   Os tipos dos operandos e a frequência do seu uso determinam a organização da memória para o armazenamento e a organização dos modos de endereçamento para o acesso

!   Estudos na forma de uso dos operandos em programa sugerem que – Tabela 4:

Ø A maioria das referências são para variáveis de tipo escalar simples

Ø Mais de 80% dessas variáveis escalares são também variáveis locais

Ø Nas referências a variáveis do tipo array existe a necessidade de acesso ao seu índice que também é uma variável escalar e local

Ø Tais estudos sugerem que o acesso a variáveis escalares deve ser otimizado – com o armazenamento em registradores, por exemplo

Page 13: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

13

RISC

Page 14: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

14

RISC

CHAMADAS DE PROCEDIMENTOS

!   Como visto, chamadas a procedimentos estão entre as instruções que mais consomem tempo de execução

!   Dois aspectos são importantes: o número de parâmetros e variáveis locais, e a profundidade das chamadas aninhadas

!   Um estudo de Tanenbaum encontrou que 98% das chamadas dinâmicas a procedimentos passavam menos que 6 parâmetros e 92% deles usavam menos de 6 variáveis locais

!   Estes resultados mostram que o número de palavras requeridas por ativação de procedimentos não é grande

!   Um outro estudo, realizado em Berkeley, encontrou que é raro ter sequencias longas e ininterruptas de chamadas de procedimentos seguidas de seus respectivos retornos

Page 15: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

15

RISC

CARACTERÍSTICAS DAS ARQUITETURAS RISC

!   Com base nos estudos apresentados, três elementos emergem que caracterizam fortemente as arquiteturas RISC:

Ø Uso de um grande número de registradores para otimizar a referência a operandos (parâmetros, variáveis locais e variáveis escalares)

Ø Projeto otimizado do Pipeline de Instruções para lidar com a alta proporção de desvios condicionais e chamadas a procedimentos

Ø Um conjunto reduzido e simplificado de instruções para permitir a implementação em hardware da UC

Page 16: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

16

RISC

CARACTERÍSTICAS DAS ARQUITETURAS RISC

!   Outras características igualmente importantes:

Ø Execução de uma instrução por ciclo

Ø Operações Registrador a Registrador

Ø Modos de endereçamento simplificado

Ø Formato da instrução simplificado

Page 17: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

17

RISC

USO DE UM GRANDE NÚMERO DE REGISTRADORES

!   Como visto, a maior parte das operações em programas típicos correspondem a comandos de atribuição (A=B)

!   Além disso, chamadas a procedimentos estão entre as instruções que mais consomem tempo de execução

!   Solução:

Ø Utilizar um maior número de registradores para viabilizar estas operações com desempenho máximo

COMO???

Page 18: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

18

RISC

JANELA DE REGISTROS

!   O maior custo das chamadas de procedimentos está associado à passagem de parâmetros e a alocação de espaço para variáveis locais

!   Uma abordagem visando desempenho buscaria alocar parâme-tros de procedimentos e variáveis locais em registradores

Como???

1.  Resultados anteriores mostraram que procedimentos típicos empregam poucos parâmetros e poucas variáveis locais

2.  A profundidade das chamadas aninhadas de procedimentos não é grande (Proc A chama Proc B que chama Proc C ...)

!   Para explorar estas propriedades, múltiplos conjuntos pequenos de registradores podem ser usados

Page 19: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

19

RISC

JANELA DE REGISTROS

Ganho ???

!   Uma chamada de procedimento faz com que a CPU mude para usar um conjunto diferente de registradores em vez de salvar o conteúdo dos registradores atuais na memória

!   O conjunto de registradores usados por um procedimento para a passagem de parâmetros e alocação de variáveis locais é conhecido como janela de ativação

!   Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica na memória

Page 20: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

20

RISC

JANELA DE REGISTROS

!   Para tornar o uso dos registradores mais eficiente ainda, janelas de ativação distintas podem ser sobrepostas:

Page 21: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

21

RISC

ORGANIZAÇÃO DOS REGISTRADORES

!   Para manipular qualquer padrão possível de chamadas e retornos de procedimentos o número de janelas de ativação não deveria possuir limites

!   Como isso não é possível (nem necessário) uma organização das janelas sob a forma de buffer circular usando apenas os registradores é sugerida

!   Caso o número de chamadas de procedimentos aninhadas ultrapasse o número de janelas disponíveis, a memória pode ser usada para armazenar dados de ativações mais antigas

!   Estudos mostram que, com 8 janelas, o uso da memória ocorre em apenas 1% das chamadas aninhadas de procedimentos

Page 22: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

22

RISC

No modelo ao lado, até 5 procedimentos aninhados podem ser chamados sem ser feito uso da memória. Por que?

Page 23: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

23

RISC

VARIÁVEIS GLOBAIS

!   Variáveis comuns a todos os procedimentos de um programa podem ser armazenadas na memória e acessadas através de instruções que referenciam operandos na memória

!   Uma abordagem mais eficiente, no entanto, seria manter variáveis globais em um conjunto fixo de registradores

!   Para manter compatibilidade com o modelo de janelas de ativação, o conjunto de registradores deve ser dividido em dois sub-conjuntos:

Registradores para variáveis globais (sem offset)

Registradores para janelas de ativação (com offset)

Page 24: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

24

RISC

CONJUNTO DE REGISTROS VERSUS CACHE

!   Em vez de usar um conjunto de registradores organizado como janelas de ativação não seria mais simples usar uma memória cache?

!   A tabela a seguir compara características das duas abordagens:

Page 25: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

25

RISC

Esquemas de endereçamento: Conjunto de Registradores versus Cache

Page 26: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

26

RISC

O PAPEL DO COMPILADOR PARA AS ARQUITETURAS RISC

!   A motivação para a adoção das arquiteturas RISC tem origem no comportamento dos programas

!   Com isso, o compilador exerce um papel fundamental para o sucesso da abordagem RISC

!   O compilador deve possuir bibliotecas com funções otimizadas, que executam operações mais complexas que as disponíveis no conjunto básico de instruções (Ex.: movimentação de grandes porções de memória)

!   Em uma máquina CISC tais funções seriam implementdas dentro do próprio conjunto de instruções

!   Outra função básica do compilador é manter, o tanto quanto possível, os operandos das instruções em execução em registradores

Page 27: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

27

RISC

O PAPEL DO COMPILADOR PARA AS ARQUITETURAS RISC

Exemplo de algoritmo de otimização do uso de registradores:

Page 28: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

28

RISC

POR QUE CISC?

!   Simplificação da construção de compiladores?

Na prática é muito difícil para o compilador explorar o conjunto de instruções complexas na geração de código

A tarefa de otimização do código gerado visando a sua redução e a melhoria do uso do pipeline são ações muito mais difíceis de se executar com um conjunto complexo de instruções

!   CISC produz programas menores?

O fato dos programas em linguagem simbólica (assembly) serem menores não garante que o código executável em bits também o seja

Tomando por base o código gerado na máquina RISC I na tabela a seguir, existe pouca ou nenhuma economia no código gerado nas máquinas CISC

Page 29: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

29

RISC

RAZÕES???

!   Como já visto, compiladores CISC tendem a favorecer instruções de máquina simples – sistemas de execução simplificados

!   O número maior de instruções nas máquinas CISC produz códigos de instruções com um número maior de bits

!   Arquiteturas RISC enfatizam o uso de registradores que requerem poucos bits para serem identificados

!   A figura a seguir mostra a quantidade de bits que é movimentada entre a cpu e a memória em instruções do tipo memória-memória e registrador-registrador

Page 30: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

30

RISC

Page 31: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

31

RISC

CARACTERÍSTICAS RISC versus CISC

!   Passado o entusiasmo inicial sobre as máquinas RISC, percebe-se que:

1.  Projetos RISC podem se beneficiar da inclusão de algumas idéias do modelo CISC – Ex.: Power PC

2.  Projetos CISC podem se beneficiar da inclusão de algumas idéias do modelo CISC – Ex.: Pentium

Page 32: Arquiteturas RISC - zottesso.com.br - RISC... · Em abordagens CISC, com poucos registradores internos, a janela de ativação é implementada na área de pilha do programa que fica

32

RISC

CARACTERÍSTICAS RISC versus CISC

A partir da comparação de diversas soluções RISC comerciais que surgiram recentemente, é consenso que as características a seguir são consideradas típicas de arquiteturas RISC:

1.  Um tamanho único de instrução

2.  O tamanho de instrução típico adotado é 4 bytes

3.  Um número reduzido de modos de endereçamento, tipicamente menos que cinco

4.  Inexistência de modo de endereçamento indireto memória a memória

5.  Inexistência de operações que combinam load/store com op. aritméticas (ex.: soma com operando na memória)

6.  Não mais que um operando na memória por instrução

7.  Número de registradores internos entre 32 e 64