RISC - Reduced Instruction Set Computers Cap. 12
Maiores Avanços nos Computadores zConceito de Família yIBM System/360 – 1964 yDEC PDP-8 ySepara Arquitetura da Implementação zUnidade de Controle Microprogramada yIdealizada por Wilkes – 1951 yProduzida pela IBM S/360 – 1964 zMemória Cache yIBM S/360 model 85 – 1969
Maiores Avanços nos Computadores zRAM no Estado Sólido zMicroprocessadores yIntel 4004 – 1971 zPipelining yIntroduz Paralelismo no Ciclo de Execução zMúltiplos Processadores
Próximo Passo – RISC zReduced Instruction Set Computer zRecursos Chaves yGrande Número de Registradores de Propósito Geral xOu Uso de Tecnologia de Compilador para Otimizar Uso dos Registradores yConjunto de Instruções Simples e Limitado yÊnfase na Otimização do Pipeline de Instruções
Comparação de Processadores zCISC RISC Superscalar zIBM DEC VAX Intel Motorola MIPS IBM Intel z370/168 11/ R4000 RS/ z zNº de Instruções z zTamanho de Instrução (Bytes) z or 8 zModos de Endereçamento z zRegistradores de Propósito Geral (GP) z zMemória de Controle (KBytes) (Microprogramação) z
Força Motriz do CISC zCustos de Software >> Custos do Hardware zLinguagens de Alto Nível (HLL) Cada Vez Mais Complexas zGap Semântico zGrandes Conjtos. de Instrução zMais Modos de Endereçamento zImplementações em Hardware de Sentenças HLL ye.g. CASE (switch) no VAX
Intenção de CISC zFacilitar o Desenvolvimento do Compilador zAumentar a Eficiência de Execução yOperações Complexas em Microcódigo zSuportar HLLs Mais Complexas
Características de Execução zEstudos Realizados Baseados em Programas Escritos em HLLs yEstudos Dinâmicos Medidos Durante a Execução do Programa zAnálise yOperações Executadas yOperandos Utilizadas ySeqüenciamento de Execução
Operações zAtribuições yMovimentação de Dados zSentenças Condicionais (IF, LOOP) yControle de Seqüência zChamada/Retorno de Procedimento Consome Muito Tempo zAlgumas Instruções HLL Resultam em Muitas Operações em Código de Máqina
Freqüência Dinâmica Relativa Ocorrência Instrução de Máq.Referência à Mem. Dinâmica(Ponderada)(Ponderada) PascalCPascalCPascalC Atrib Loop Call If GoTo Outra613121
Operandos zPrincipalmente Variáveis Locais Escalares zOtimização Deveria se Concentrar no Acesso a Variáveis Locais PascalCMédia Constante Inteira Variável Escalar Matriz/Estrutura262425
Chamadas de Procedimentos zConsome Muito Tempo zDepende do Nº de Parâmetros Passados zDepende do Nível de Aninhamento zMaioria do Programa Não Realizam Muitas Chamadas Seguidas de Muitos Retornos zMaioria das Variáveis São Locais yLocalidade de Referência
Implicações zMelhor Suporte Otimizando yRecursos Mais Utilizados yRecursos que Consomem Mais Tempo zGrande Nº de Registradores yReferência a Operandos zProjeto Cuidadoso de Pipelines yPredição de Desvios, etc. zConjunto de Instruções Simplificado (Reduzido)
Implementações RISC Registradores
Grande Arquivo de Registradores zSolução em Software yRequer que o Compilador Aloque Registradores xAlocação Baseada nas Variáveis Mais Utilizadas em um Dado Momento yRequer Análise de Programa Sofisticada zSolução em Hardware yTem Mais Registradores xPortanto Mais Variáveis Estarão nos Registradores
Registradores para Variáveis Locais zArmazena Variáveis Locais Escalares em Registradores yReduz Acesso à Memória zCada Chamada de Procedimento/Função Muda a Localidade yParâmetros são Passados yResultados são Retornados yVariáveis dos Programas que Chamaram são Restauradas
Janelas de Registradores zApenas Poucos Parâmetros zFaixa Limitada de Profundidade de Chamadas zUso de Múltiplos Conjuntos Pequenos de Registradores yChamadas Chaveiam para um Conjunto Diferente de Registradores yRetornos Chaveiam de Volta para Um Conjunto de Reg. Previamente Utilizado
Janelas de Registradores zTrês Áreas Dentro do Conjunto de Registradores yRegistradores de Parâmetro yRegistradores Locais yRegistradores Temporários xRegistradores 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 zInt global.a, global.b, global.c; zVoid Main(); z{ zInt main.a, main.b, main.c; z... zProc.b(global.a,main.b,main.c); z... z} zVoid Proc.b(int a,b,c); z{ zInt b.a,b.b,b.c; z... zProc.c(global.b,b.a); z... z} zVoi Proc.c(int c,d); z{ zInt c.a; z... z}
Int global.a, global.b, global.c; Void Main(); { Int main.a, main.b, main.c;... Proc.b(global.a,main.b,main.c);... } Main.a Main.b Main.c 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;... } abcabc b.a b.b b.c c.a Global.b b.a cdcd A B C Exemplo de Janela de Registrador
Variáveis Globais zAlocadas pelo Compilador na Memória yIneficiente para Variáveis Freqüentemente Acessadas zSolução Proposta yTer um Conjunto de Registradores para Variáveis Globais
Registradores X Cache zArquivo de RegistradoresCache zTodos Escalares LocaisEsc. Locais Recentemente Usados (RU) zVariáveis IndividuaisBlocos de Mem. zVar. Globais do CompiladorVar. Globais RU zSalvar/Restaurar Baseado emSalv./Rest. baseado em Aninhamento de Proc.Algoritmo de Cache zEndereçamento de Reg.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
zMaioria das Instruções são Registrador para Registrador zExecução em Dois Estágios yI: Busca de Instrução yE: Execução xOperação ULA com Entrada e Saída de Registrador zPara Load e Store yI: Busca de Instrução yE: Execução xCalcula Endereço de Memória yD: Memória xOperação de Registrador para Memória e de Memória para Registrador
Efeitos de Pipelining
Otimização de Pipelining zDesvio Atrasado yNão Toma Desvio Até Execução da Instrução Seguinte Slot de Desvio
Desvio Normal e Atrasado EndereçoNormalAtrasadoOtimizado 100LOAD X,ALOAD X,ALOAD X,A 101ADD 1,AADD 1,AJUMP JUMP 105JUMP 105ADD 1,A 103ADD A,BNOOPADD A,B 104SUB C,BADD A,BSUB C,B 105STORE A,ZSUB C,BSTORE A,Z 106STORE A,Z
Uso de Desvio Atrasado
RISC X CISC Considerações
Porquê CISC? zSimplificação de Compilador? yQuestão Controversa xInstruções de Máquina Complexas São Difíceis de Utilizar xOtimização Mais Difícil zProgramas Menores? yOs Programas Ocupam Menos Memória, Mas… xMemória É Barata yPodem Não Ocupar Menos Bits, Apenas Menores na Forma Simbólica xMais Instruções Opcodes Maiores xReferência a Registrador Requer Menos Bits
Porquê CISC? zProgramas Mais Rápidos? yTendência ao Uso de Instruções Simples yUnidade de Controle Mais Complexa xArmazenamento de Microprogramas de Controle Maior xInstruções Simples Demoram Mais a Executar zConclusão yNão é Claro que CISC é a Solução Apropriada
Características RISC zUma Instruções Por Ciclo zOperações Registrador - Registrador zPoucos e Simples Modos de Endereçamento zPoucos e Simples Formatos de Instrução zProjeto Hardwired (Sem Microcódigo) zFormato de Instrução Fixo zMaior Esforço/Tempo de Compilação
RISC v CISC zNão Há Divisão Clara zMuitos Projetos Utilizam Ambas Filosofias ye.g. PowerPC e Pentium II
Controvérsia zQuantitativa yComparação de Tamanhos de Programas e Velocidade de Execução zQualitativa yQuestões de Suporte a HLLs e Uso de Espaço no CI (VLSI) zProblemas yNão Há Pares de RISC e CISC Comparáveis yNão Há um Conjunto Definitivo de Programas de Teste yDificuldade de Separar os Efeitos do Hardware dos Efeitos do Compilador yMaioria das Comparações Feitas em Laboratório e Não no Mercado yMaioria dos Dispositivos Comerciais São uma Mistura
Por onde estudar ? zArquitetura e Organização de Computadores yWilliam Stallings xCap. 12 zManufacturer Web Sites