arquitetura de computadores - máquinas risc · •o apontador de janela atual e o apontador de...
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