Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva - PDF Download grátis
Download "Arquitetura de Computadores - Arquitetura RISC. por Helcio Wagner da Silva"
Alana de Caminha Nunes
1 Arquitetura de Computadores - Arquitetura RISC por Helcio Wagner da Silva
2 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 na otimização do uso de registradores Conjunto limitado (reduzido) de instruções simples Enfoque na utilização de pipeline de instruções Arquitetura oposta à CISC (Complex Instruction Set Computer) 2
3 Introdução CARACTERÍSTICA Processador (Intel, CISC) SPARC (Sun, RISC) Ano de desenvolvimento Número de instruções Tamanho de uma instrução (Bytes) Modos de endereçamento 11 1 Número de registradores de propósito geral
4 Características da Execução de Instruções Com as linguagens de programação de baixo nível, o custo da produção de SW era bem alto Além disso, falhas de SW eram inerentemente mais comuns que falhas de HW Esse panorama mudou com o surgimento das linguagens de programação de alto nível Elas permitem ao programador abstrair os detalhes da máquina e expressar algoritmos de forma mais concisa 4
5 Características da Execução de Instruções O preço pago pela adoção das linguagens de alto ní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ções disponibilizadas pelo HW da máquina Os projetistas buscaram arquiteturas que diminuíssem esse gap. Elas incluíam: Grandes conjuntos de instruções Dúzias de modos de endereçamento Implementação de diversos comandos de linguagens de alto nível no HW da máquina 5
6 Características da Execução de Instruções Outros pesquisadores tomaram o caminho inverso: simplificar o conjunto de instruções Eles tomaram com base estudos que determinavam as características e os padrões de execução de instruções de máquina geradas por programas de alto nível Os aspectos examinados foram: Operações realizadas Operandos usados Chamadas de procedimento 6
7 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 Comando de repetição Chamada de proced Comando condicional Desvio incondicional Outros São executados mais freqüentemente Consomem mais tempo na execução 7
8 Características da Execução de Instruções operandos Pascal C Média Constante inteira Variável escalar Vetor/registro A maioria das referências é para variáveis escalares - e locais Referências a vetores ou registros incluem referências anteriores a seus apontadores, que são, também, variáveis escalares locais 8
9 Características da Execução de Instruções chamadas de procedimentos Aspectos significativos: Número de parâmetros e variáveis utilizados % de execução de chamadas de proc. com: Compiladores, interpretadores e editores de texto Nível de aninhamento de procedimentos Pequenos programas não numéricos > 3 argumentos 0-7 % 0-5 % > 5 argumentos 0-3 % 0 % > 8 argumentos e variáveis escalares locais > 12 argumentos e variáveis escalares locais 1-20 % 0-6 % 1-6 % 0-3 % Normalmente, o programa permanece limitado a uma janela de profundidade limitada 9
10 Características da Execução de Instruções resumo das conclusões Comandos de atribuição (movimentação de dados) são muito utilizados Esses dados são, em sua maioria, variáveis escalares 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
11 Banco de Registradores Registradores são organizados em janelas para diminuir o acesso à memória Registradores de parâmetros Registradores locais Registradores temporários Janela i Cada janela é dedicada a uma chamada de procedimento Tipos de registradores em uma janela Registradores de parâmetros Registradores locais Registradores temporários 11
12 Banco de Registradores Os registradores temporários armazenam os parâmetros passados para o procedimento Os registradores locais contêm as variáveis locais ao procedimento Os registradores temporários são usados para trocar resultados/parâmetros com o procedimento seguinte Registradores de parâmetros Registradores locais Registradores temporários Janela i Janela i+1 Registradores de parâmetros Registradores locais Registradores temporários 12
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) 13
14 Quando D E, o Apontador de janela atual é movido de j3 para j4 para mostrar a janela atualmente ativa 14
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 15
16 Durante a interrupção, parte do conteú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 transcorre normalmente 16
17 Retorno dos procedimentos (A B C D E F) O Apontador de janela atual Identifica a mesma janela que o Apontador de janela salva (j0) Sob estas circunstâncias, ocorre uma interrupção 17
18 Durante a interrupção, o conteúdo dos registradores de A é restaurado da memória O apontador de janela salva é decrementado; ele identifica agora a janela j5 18
19 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 registradores especí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 armazenadas nos registradores 19
20 Banco de Registradores x Memória Cache Banco de Registradores Todas as variáveis escalares locais Variáveis individuais Variáveis globais designadas pelo compilador Operações de salvamento/restauração baseadas na profundidade de aninhamento de procedimentos Endereçamento de registrador Memória Cache Variáveis escalares locais usadas recentemente Blocos de memória Variáveis globais usadas recentemente Operações de salvamento/restauração baseadas no algoritmo de substituição da cache Endereçamento de memória 20
21 Banco de Registradores x Memória Cache Banco de registradores baseado em janelas Referência simples a um registrador instrução R registradores Dados W# decodificador 21
22 Banco de Registradores x Memória Cache Memória cache É necessário um endereço de memória completo instrução A Comparação Dados 22
23 Otimização do Uso de Registradores por Compiladores Suposições: Há apenas um pequeno conjunto de registradores O objetivo do compilador é armazenar os operandos usados mais freqüentemente nesses registradores, minimizando o acesso à memória Cada operando candidato a residir em um desses registradores é associado a um registrador virtual O problema é definir quais destes (potencialmente) vários registradores virtuais devem ser associados aos (relativamente) poucos registradores reais 23
24 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ês registradores reais (R1, R2 e R3)? Uma das técnicas mais comumente usadas por compiladores RISC é a Coloração de Grafos Nessa técnica, os nós do grafo são os registradores virtuais, que devem ser coloridos com um número de cores igual ao número de registradores reais 24
25 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 t A B C D E F A B C D E F 25
26 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 t A B C D E F R1 R2 R3 A B C D E F 26
27 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 uma operação da ULA e armazenar o resultado em um registrador 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
28 Operações de Registrador para Registrador Opostas conceitualmente às operações que envolvem 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
29 Operações de Registrador para Registrador À princípio, abordagem desvantajosa Add B C A De memória para memória I 1 = 56, D 1 = 96, M 1 = Load rb B Load rc C Add ra rb rc Store ra C Entre registrador e memória I 2 = 104, D 2 = 96, M 2 = 200 A B + C (M 2 > M 1 ) 29
30 Operações de Registrador para Registrador Com base em resultado anterior, foi sugerido que as (então) futuras arquiteturas não incluíssem registradores! No entanto, considerando-se que boa parte dos operandos não precisam ser armazenados na memória durante a execução do programa, a abordagem mostra-se vantajosa 30
31 Operações de Registrador para Registrador Add B C A Add A C B Sub B D D De memória para memória I 1 = 168, D 1 = 288, M 1 = Add ra rb rc Add rb ra rc Sub rd rd rb Entre registrador e memória I 2 = 60, D 2 = 0, M 2 = 0 A B + C B A + C D D - B (M 2 < M 1 ) 31
32 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 e armazenamento 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
33 Execução Seqüencial 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 X I E 33
34 Pipeline com Dois Caminhos Load ra M I E D Apenas um acesso à memória por estágio é permitido Load rb M I E D Add rc ra + rb I E Store M rc I E D Branch X I E NOOP I E 34
35 Pipeline com Três Caminhos Load ra M I E D Load rb M I E D NOOP I E São permitidos dois acessos à memória por estágio Add rc ra + rb I E Store M rc I E D Branch X I E NOOP I E 35
36 Pipeline com Quatro Caminhos Load ra M I E 1 D Load rb M E 2 I E 1 E 2 D NOOP I E 1 E 2 NOOP I E 1 E 2 São permitidos dois acessos à memória por estágio Estágio E é dividido em: - E 1 : leitura do banco de registradores - E 2 : operação da ULA e escrita em registrador Add Store rc ra + rb M rc I E 1 E 2 I E 1 E 2 D Branch NOOP X I E 1 E 2 I E 1 E 2 NOOP I E 1 E 2 36
37 Otimização do Pipeline Endereço Desvio normal Desvio atrasado Desvio atrasado otimizado 100 LOAD X,rA LOAD X,rA LOAD X,rA 101 ADD 1,rA ADD 1,rA JUMP 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 37
38 Otimização do Pipeline 100 LOAD X,rA I E D 101 ADD 1,rA I E 102 JUMP 106 I E 100 LOAD X,rA I E D 101 JUMP 105 I E 102 ADD 1,rA I E 103 NOOP I E 105 STORE ra,z I E D 106 STORE ra,z I E D Desvio atrasado - Inserção de instrução NOOP Desvio atrasado otimizado - Inversão de instruções 38
39 Controvérsia RISC x CISC Critérios de avaliação da arquitetura RISC Quantitativos Comparação de tamanho e velocidade entre programas executáveis gerados em máquinas RISC e CISC Qualitativos Exame de parâmetros tais como suporte a linguagens de alto nível e uso ótimo da VLSI Entusiastas da arquitetura CISC refutaram os critérios apresentados acima 39
40 Controvérsia RISC x CISC Alguns contra-argumentos apresentados Não há um conjunto definitivos de programas a serem utilizados para teste É difícil distinguir os efeitos gerados pelo HW daqueles gerados 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 fiquem mais complexos (característica CISC) Demanda por melhor desempenho faz com que haja um aumento do número de registradores de uso geral e na otimização do pipeline de instruções (característica RISC) 40