arquitetura de computadores - máquinas risc · •o apontador de janela atual e o apontador de...

Post on 09-Nov-2018

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Arquitetura de Computadores- Arquitetura RISC

por

Helcio Wagner da Silva

Introdução

• RISC = Reduced Instruction Set Computer

• Elementos básicos:– Grande número de registradores de propósito

geral ou uso de tecnologias de compilação naotimização do uso de registradores

– Conjunto limitado (reduzido) de instruçõessimples

– Enfoque na utilização de pipeline de instruções

• Arquitetura oposta à CISC (ComplexInstruction Set Computer)

2

Introdução

CARACTERÍSTICAProcessador

80486 (Intel, CISC) SPARC (Sun, RISC)

Ano de desenvolvimento 1989 1987

Número de instruções 235 69

Tamanho de uma instrução (Bytes)

1-11 4

Modos de endereçamento 11 1

Número de registradores de propósito geral

8 40-520

3

Características da Execução de Instruções

• Com as linguagens de programação de baixonível, o custo da produção de SW era bem alto

• Além disso, falhas de SW eram inerentementemais comuns que falhas de HW

• Esse panorama mudou com o surgimento daslinguagens de programação de alto nível

– Elas permitem ao programador abstrair osdetalhes da máquina e expressar algoritmos deforma mais concisa

4

Características da Execução de Instruções

• O preço pago pela adoção das linguagens de altonível é o gap semântico– Há uma enorme distância entre as operações

disponíveis nas linguagens de alto nível e as operaçõesdisponibilizadas pelo HW da máquina

• Os projetistas buscaram arquiteturas quediminuíssem esse gap. Elas incluíam:– Grandes conjuntos de instruções

– Dúzias de modos de endereçamento

– Implementação de diversos comandos de linguagensde alto nível no HW da máquina

5

Características da Execução de Instruções

• Outros pesquisadores tomaram o caminhoinverso: simplificar o conjunto de instruções

• Eles tomaram com base estudos quedeterminavam as características e os padrõesde execução de instruções de máquinageradas por programas de alto nível

• Os aspectos examinados foram:– Operações realizadas

– Operandos usados

– Chamadas de procedimento6

Características da Execução de Instruções – operações realizadas

Ocorrência dinâmica

Ponderada por instrução de máquina

Ponderada por referência à memória

Pascal C Pascal C Pascal C

Comando de atribuição 45 38 13 13 14 15

Comando de repetição 5 3 42 32 33 26

Chamada de proced. 15 12 31 33 44 45

Comando condicional 29 43 11 21 7 13

Desvio incondicional - 3 - - - -

Outros 6 1 3 1 2 1

7

São executados maisfreqüentemente

Consomem mais tempona execução

Características da Execução de Instruções – operandos

• A maioria das referências é para variáveisescalares - e locais

– Referências a vetores ou registros incluemreferências anteriores a seus apontadores, quesão, também, variáveis escalares locais

8

Pascal C Média

Constante inteira 16 23 20

Variável escalar 58 53 55

Vetor/registro 26 24 25

Características da Execução de Instruções –chamadas de procedimentos

• Aspectos significativos:

– Número de parâmetros e variáveis utilizados

– Nível de aninhamento de procedimentos

• Normalmente, o programa permanece limitado a uma janela de profundidade limitada

9

% de execução dechamadas de proc. 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 argumentos e variáveis escalares locais

1-20 % 0-6 %

> 12 argumentos e variáveis escalares locais

1-6 % 0-3 %

Características da Execução de Instruções – resumo das conclusões

• Comandos de atribuição (movimentação dedados) são muito utilizados

• Esses dados são, em sua maioria, variáveisescalares locais

• Abordagens visando melhoria do desempenho– Abordagem baseada em HW

• Banco de Registradores

– Abordagem baseada em SW• Técnicas de compilação que visam otimizar a utilização

de registradores

10

Banco de Registradores

• Registradores são organizados em janelas para diminuir o acesso à memória

• Cada janela é dedicada a uma chamada deprocedimento

• Tipos de registradores em uma janela– Registradores de parâmetros

– Registradores locais

– Registradores temporários11

Registradores de parâmetros

Registradores locais

Registradores temporários Janela i

Banco de Registradores

• Os registradores temporários armazenam osparâmetros passados para o procedimento

• Os registradores locais contêm as variáveis locais aoprocedimento

• Os registradores temporários são usados para trocarresultados/parâmetros com o procedimento seguinte

12

Registradores de parâmetros

Registradores locais

Registradores temporários

Registradores de parâmetros

Registradores locais

Registradores temporários

Janela i

Janela i+1Registradores de

parâmetros

13

• Nível de aninhamento é igual a 4(A → B, B → C, C → D)

• D é procedimento ativo atualmente• O Apontador de janela atual identifica a

Janela atualmente ativa (j3)

14

• Quando D → E, o Apontador de janela atual é movido de j3 para j4 para mostrar a janela atualmente ativa

15

• Se E → F, o Apontador de janela atual é movido de j4 para j5 para mostrar a janela atualmente ativa

• O Apontador de janela atual e o Apontador de Janela salva apontam para a mesma janela (j5)• O problema é que os registradores temporários de F serão gravados sobre os registradores de parâmetro de A• Sob estas circunstâncias, ocorre uma interrupção

16

• Durante a interrupção, parte doconteúdo dos registradores de A é armazenado na memória• O Apontador de janela salva é incrementado; ele aponta agora para j0• A chamada ao procedimento F transcorrenormalmente

17

• Retorno dos procedimentos (A ← B ← C ← D ← E ← F)

• O Apontador de janela atual Identifica a mesma janela que oApontador de janela salva (j0)

• Sob estas circunstâncias, ocorre umainterrupção

18

• Durante a interrupção, o conteúdodos registradores de A é restauradoda memória

• O apontador de janela salva é decrementado;ele identifica agora a janela j5

Variáveis Globais

• Usadas por mais de um procedimento

• Duas alternativas para armazenamento

– As variáveis globais são armazenadas na memória

• Abordagem simples

• Ineficiente para variáveis usadas com freqüência

– Variáveis globais são armazenadas em registradoresespecíficos no µP

• Abordagem mais eficiente

• Mais complexa que a anterior

– HW mais complexo; mecanismos de endereçamento diferentes

– Compilador deve decidir quais variáveis devem ser armazenadasnos registradores 19

Banco de Registradores x Memória Cache

Banco de Registradores Memória Cache

Todas as variáveis escalares locais Variáveis escalares locais usadasrecentemente

Variáveis individuais Blocos de memória

Variáveis globais designadas pelo compilador

Variáveis globais usadas recentemente

Operações de salvamento/restauração baseadas na profundidade de

aninhamento de procedimentos

Operações de salvamento/restauração baseadas no algoritmo de substituição

da cache

Endereçamento de registrador Endereçamento de memória

20

Banco de Registradores x Memória Cache

• Banco de registradores baseado em janelas

– Referência simples a um registrador

21

R

decodificadorW#

instrução registradores

Dados

Banco de Registradores x Memória Cache

• Memória cache

– É necessário um endereço de memória completo

22

A

instrução

ComparaçãoDados

Otimização do Uso de Registradores por Compiladores

• Suposições:– Há apenas um pequeno conjunto de registradores

– O objetivo do compilador é armazenar os operandosusados mais freqüentemente nesses registradores,minimizando o acesso à memória

• Cada operando candidato a residir em um dessesregistradores é associado a um registrador virtual

• O problema é definir quais destes(potencialmente) vários registradores virtuaisdevem ser associados aos (relativamente) poucosregistradores reais

23

Otimização do Uso de Registradores por Compiladores

• Exemplo: como mapear seis registradores virtuais(A, B, C, D, E e F) para um conjunto de trêsregistradores reais (R1, R2 e R3)?

• Uma das técnicas mais comumente usadas porcompiladores RISC é a Coloração de Grafos

• Nessa técnica, os nós do grafo são osregistradores virtuais, que devem ser coloridoscom um número de cores igual ao número deregistradores reais

24

Otimização do Uso de Registradores por Compiladores

• Coloração de Grafos– 1º Passo:

• Análise do programa a) definição dos registradores

virtuais

b) Definição da seqüência de intervalos de uso ativo

– 2º Passo:• Construção do grafo

a) Se dois registradores simbólicos estão ativos durante um mesmo trecho de programa, eles são unidos por uma aresta

b) Atribuir 3 cores aos nós de forma que nós adjacentes tenham cores diferentes

25

A B

C D E F

A B C D E Ft

A B

C D E

Otimização do Uso de Registradores por Compiladores

• Coloração de Grafos

– Conclusões:• Os registradores virtuais

de mesma cor podem ser associados ao mesmo registrador real

• O registrador virtual F, por não poder ser colorido, tem seu conteúdo armazenado na memória

26

A B

C D E F

A B C D E Ft

A B

C D E

R1 R2 R3

Características de Arquiteturas RISC

• Uma instrução por ciclo de máquina– Um ciclo de máquina é o tempo requerido para buscar

dois operandos em registradores, executar umaoperação da ULA e armazenar o resultado em umregistrador

• Operações de registrador para registrador– Com operações simples de CARGA e

ARMAZENAMENTO

• Modos de endereçamento simples

• Formatos de instrução simples

27

Operações de Registrador para Registrador

• Opostas conceitualmente às operações queenvolvem somente a memória

• Parâmetros usados para comparação

– I: tamanho das instruções executadas

– D: tamanho dos dados usados

– M: tráfego total da memória

• M = I + D

28

Operações de Registrador para Registrador

• À princípio, abordagem desvantajosa

29

Add B C A

8 16 16 16

Load BrB

Load rC C

Add rA rB rC

Store rA C

8 4 16

A ← B + C

De memória para memóriaI1 = 56, D1 = 96, M1 = 152

Entre registrador e memóriaI2 = 104, D2 = 96, M2 = 200

(M2 > M1)

Operações de Registrador para Registrador

• Com base em resultado anterior, foi sugeridoque as (então) futuras arquiteturas nãoincluíssem registradores!

• No entanto, considerando-se que boa partedos operandos não precisam ser armazenadosna memória durante a execução do programa,a abordagem mostra-se vantajosa

30

Operações de Registrador para Registrador

31

Add B C A

8 16 16 16

De memória para memóriaI1 = 168, D1 = 288, M1 = 456

Add A C B

Sub B D D

Add rA rB rC

Entre registrador e memóriaI2 = 60, D2 = 0, M2 = 0

Add rB rA rC

Sub rD rD rB

A ← B + CB ← A + CD ← D - B

(M2 < M1)

8 4 4 4

Pipeline de Instruções RISC

• Fases de um ciclo de instrução:– I: busca da instrução

– E: execução da instrução• Realiza uma operação da ULA, com entrada e saída em

registradores

• A execução de instruções de carga earmazenamento requer três fases:– I: busca da instrução

– E: cálculo do endereço da memória

– D: transferência de dados entre memória e registrador

32

Execução Seqüencial

33

Load rA ← M I E D

Load rB ← M I E D

Add rC ← rA + rB I E

Store M ← rC I E D

Branch XI E

Pipeline com Dois Caminhos

34

Load rA ← M I E D

Load rB ← M I E D

Add rC ← rA + rB I E

Store M ← rC I E D

Branch XI E

NOOPI E

• Apenas um acesso à memória por estágio é permitido

Pipeline com Três Caminhos

35

Load rA ← M I E D

Load rB ← M I E D

Add rC ← rA + rB I E

Store M ← rC I E D

Branch XI E

NOOPI E

• São permitidos dois acessos à memória por estágioNOOP I E

Pipeline com Quatro Caminhos

36

Load rA ← M I E1 D

Load rB ← M

Add rC ← rA + rB

Store M ← rC

Branch X

NOOP

• São permitidos dois acessos à memória por estágio

• Estágio E é dividido em:- E1: leitura do banco de

registradores- E2: operação da ULA e escrita

em registrador

E2

I E1 DE2

I E1 E2

I E1 DE2

I E1 E2

I E1 E2

NOOP I E1 E2

NOOP I E1 E2

NOOP I E1 E2

Otimização do Pipeline

37

Endereço Desvio normal Desvio atrasadoDesvio atrasado

otimizado

100 LOAD X,rA LOAD X,rA LOAD X,rA

101 ADD 1,rA ADD 1,rA JUMP 105

102 JUMP 105 JUMP 106 ADD 1,rA

103 ADD rA,rB NOOP ADD rA,rB

104 SUB rC,rB ADD rA,rB SUB rC,rB

105 STORE rA,Z SUB rC,rB STORE rA,Z

106 STORE rA,Z

Otimização do Pipeline

38

100 LOAD X,rA I E D

101 ADD 1,rA I E

102 JUMP 106 I E

103 NOOP I E

106 STORE rA,ZI E D

100 LOAD X,rA I E D

101 JUMP 105 I E

102 ADD 1,rA I E

105 STORE rA,Z I E D

Desvio atrasado - Inserção de instrução NOOP

Desvio atrasado otimizado- Inversão de instruções

Controvérsia RISC x CISC

• Critérios de avaliação da arquitetura RISC

– Quantitativos

• Comparação de tamanho e velocidade entre programasexecutáveis gerados em máquinas RISC e CISC

– Qualitativos

• Exame de parâmetros tais como suporte a linguagensde alto nível e uso ótimo da VLSI

• Entusiastas da arquitetura CISC refutaram oscritérios apresentados acima

39

Controvérsia RISC x CISC

• Alguns contra-argumentos apresentados

– Não há um conjunto definitivos de programas a seremutilizados para teste

– É difícil distinguir os efeitos gerados pelo HW daquelesgerados pela maneira como o compilador foi escrito

• Hoje, tem-se a convergência entre RISC e CISC

– Densidade de chip crescente faz com que os μP fiquemmais complexos (característica CISC)

– Demanda por melhor desempenho faz com que haja umaumento do número de registradores de uso geral e naotimização do pipeline de instruções (característica RISC)

40

top related