RISC - Reduced Instruction Set Computers Cap. 12 Maiores Avanços nos Computadores Conceito de Família IBM System/360 – 1964 DEC PDP-8 Separa Arquitetura da Implementação Unidade de Controle Microprogramada Idealizada por Wilkes – 1951 Produzida pela IBM S/360 – 1964 Memória Cache IBM S/360 model 85 – 1969 Maiores Avanços nos Computadores RAM no Estado Sólido Microprocessadores Intel 4004 – 1971 Pipelining Introduz Paralelismo no Ciclo de Execução Múltiplos Processadores Próximo Passo – RISC Reduced Instruction Set Computer Recursos Chaves Grande Número de Registradores de Propósito Geral Ou Uso de Tecnologia de Compilador para Otimizar Uso dos Registradores Conjunto de Instruções Simples e Limitado Ênfase na Otimização do Pipeline de Instruções Comparação de Processadores CISC IBM 370/168 1973 Nº de Instruções 208 303 DEC VAX Intel 11/780 486 1978 1989 235 RISC Motorola MIPS 88000 R4000 1988 1991 Superscalar IBM Intel RS/6000 80960 1990 1989 51 94 184 62 Tamanho de Instrução (Bytes) 2-6 2-57 1-11 4 32 4 4 or 8 Modos de Endereçamento 4 22 11 3 1 2 11 Registradores de Propósito Geral (GP) 16 16 8 32 32 32 23-256 Memória de Controle (KBytes) (Microprogramação) 420 480 246 0 0 0 0 Força Motriz do CISC Custos de Software >> Custos do Hardware Linguagens de Alto Nível (HLL) Cada Vez Mais Complexas Gap Semântico Grandes Conjtos. de Instrução Mais Modos de Endereçamento Implementações em Hardware de Sentenças HLL e.g. CASE (switch) no VAX Intenção de CISC Facilitar o Desenvolvimento do Compilador Aumentar a Eficiência de Execução Operações Complexas em Microcódigo Suportar HLLs Mais Complexas Características de Execução Estudos Realizados Baseados em Programas Escritos em HLLs Estudos Dinâmicos Medidos Durante a Execução do Programa Análise Operações Executadas Operandos Utilizadas Seqüenciamento de Execução Operações Atribuições Movimentação de Dados Sentenças Condicionais (IF, LOOP) Controle de Seqüência Chamada/Retorno de Procedimento Consome Muito Tempo Algumas Instruções HLL Resultam em Muitas Operações em Código de Máqina Freqüência Dinâmica Relativa Atrib. Loop Call If GoTo Outra Ocorrência Dinâmica Pascal C 45 38 5 3 15 12 29 43 3 6 1 Instrução de Máq. (Ponderada) Pascal C 13 13 42 32 31 33 11 21 3 1 Referência à Mem. (Ponderada) Pascal C 14 15 33 26 44 45 7 13 2 1 Operandos Principalmente Variáveis Locais Escalares Otimização Deveria se Concentrar no Acesso a Variáveis Locais Constante Inteira Variável Escalar Matriz/Estrutura Pascal 16 58 26 C 23 53 24 Média 20 55 25 Chamadas de Procedimentos Consome Muito Tempo Depende do Nº de Parâmetros Passados Depende do Nível de Aninhamento Maioria do Programa Não Realizam Muitas Chamadas Seguidas de Muitos Retornos Maioria das Variáveis São Locais Localidade de Referência Implicações Melhor Suporte Otimizando Recursos Mais Utilizados Recursos que Consomem Mais Tempo Grande Nº de Registradores Referência a Operandos Projeto Cuidadoso de Pipelines Predição de Desvios, etc. Conjunto de Instruções Simplificado (Reduzido) Implementações RISC Registradores Grande Arquivo de Registradores Solução em Software Requer que o Compilador Aloque Registradores Alocação Baseada nas Variáveis Mais Utilizadas em um Dado Momento Requer Análise de Programa Sofisticada Solução em Hardware Tem Mais Registradores Portanto Mais Variáveis Estarão nos Registradores Registradores para Variáveis Locais Armazena Variáveis Locais Escalares em Registradores Reduz Acesso à Memória Cada Chamada de Procedimento/Função Muda a Localidade Parâmetros são Passados Resultados são Retornados Variáveis dos Programas que Chamaram são Restauradas Janelas de Registradores Apenas Poucos Parâmetros Faixa Limitada de Profundidade de Chamadas Uso de Múltiplos Conjuntos Pequenos de Registradores Chamadas Chaveiam para um Conjunto Diferente de Registradores Retornos Chaveiam de Volta para Um Conjunto de Reg. Previamente Utilizado Janelas de Registradores Três Áreas Dentro do Conjunto de Registradores Registradores de Parâmetro Registradores Locais Registradores Temporários Registradores Temporários de um Conjto. Superpõem-se aos Registradores de Parâmetros do Seguinte • Passagem de Parâmetros Sem Movimentação de Dados Janelas de Registradores Superpostas Diagrama de Buffer Circular Exemplo de Janela de Registrador Int global.a, global.b, global.c; Void Main(); { Int main.a, main.b, main.c; ... Proc.b(global.a,main.b,main.c); ... } Void Proc.b(int a,b,c); { Int b.a,b.b,b.c; ... Proc.c(global.b,b.a); ... } Voi Proc.c(int c,d); { Int c.a; ... } Exemplo de Janela de Registrador A C Int global.a, global.b, global.c; Void Main(); { Int main.a, main.b, main.c; ... Proc.b(global.a,main.b,main.c); ... } c.a b.a b.b b.c B Void Proc.b(int a,b,c); { Int b.a,b.b,b.c; ... Proc.c(global.b,b.a); ... } Voi Proc.c(int c,d); { Int c.a; ... } Variáveis Globais Alocadas pelo Compilador na Memória Ineficiente para Variáveis Freqüentemente Acessadas Solução Proposta Ter um Conjunto de Registradores para Variáveis Globais Registradores X Cache Arquivo de Registradores Todos Escalares Locais Cache Esc. Locais Recentemente Usados (RU) Variáveis Individuais Var. Globais do Compilador Salvar/Restaurar Baseado em Aninhamento de Proc. Endereçamento de Reg. Blocos de Mem. Var. Globais RU Salv./Rest. baseado em Algoritmo de Cache End. de Memória Referenciando um Escalar Arquivo de Registrador de Janela Referenciando um Escalar - Cache Técnica de Colorização de Grafos Implementações RISC RISC Pipelining RISC Pipelining Maioria das Instruções são Registrador para Registrador Execução em Dois Estágios I: Busca de Instrução E: Execução Operação ULA com Entrada e Saída de Registrador Para Load e Store I: Busca de Instrução E: Execução Calcula Endereço de Memória D: Memória Operação de Registrador para Memória e de Memória para Registrador Efeitos de Pipelining Otimização de Pipelining Desvio Atrasado Não Toma Desvio Até Execução da Instrução Seguinte Slot de Desvio Desvio Normal e Atrasado Endereço 100 101 102 103 104 105 106 Normal LOAD X,A ADD 1,A JUMP 105 ADD A,B SUB C,B STORE A,Z Atrasado LOAD X,A ADD 1,A JUMP 105 NOOP ADD A,B SUB C,B STORE A,Z Otimizado LOAD X,A JUMP 105 ADD 1,A ADD A,B SUB C,B STORE A,Z Uso de Desvio Atrasado RISC X CISC Considerações Porquê CISC? Simplificação de Compilador? Questão Controversa Instruções de Máquina Complexas São Difíceis de Utilizar Otimização Mais Difícil Programas Menores? Os Programas Ocupam Menos Memória, Mas… Memória É Barata Podem Não Ocupar Menos Bits, Apenas Menores na Forma Simbólica Mais Instruções Opcodes Maiores Referência a Registrador Requer Menos Bits Porquê CISC? Programas Mais Rápidos? Tendência ao Uso de Instruções Simples Unidade de Controle Mais Complexa Armazenamento de Microprogramas de Controle Maior Instruções Simples Demoram Mais a Executar Conclusão Não é Claro que CISC é a Solução Apropriada Características RISC Uma Instruções Por Ciclo Operações Registrador - Registrador Poucos e Simples Modos de Endereçamento Poucos e Simples Formatos de Instrução Projeto Hardwired (Sem Microcódigo) Formato de Instrução Fixo Maior Esforço/Tempo de Compilação RISC v CISC Não Há Divisão Clara Muitos Projetos Utilizam Ambas Filosofias e.g. PowerPC e Pentium II Controvérsia Quantitativa Comparação de Tamanhos de Programas e Velocidade de Execução Qualitativa Questões de Suporte a HLLs e Uso de Espaço no CI (VLSI) Problemas Não Há Pares de RISC e CISC Comparáveis Não Há um Conjunto Definitivo de Programas de Teste Dificuldade de Separar os Efeitos do Hardware dos Efeitos do Compilador Maioria das Comparações Feitas em Laboratório e Não no Mercado Maioria dos Dispositivos Comerciais São uma Mistura Por onde estudar ? Arquitetura e Organização de Computadores William Stallings Cap. 12 Manufacturer Web Sites