Baixe o app para aproveitar ainda mais
Prévia do material em texto
* PUCC Agenda Máquinas RISC * PUCC Gap Semântico Queda do custo do Hardware o custo relativo do Software aumentou. SW é pouco confiável Resposta dos pesquisadores foi desenvolver linguagens de programação mais poderosas e complexas. Aumento da distância semântica entre operações disponíveis em linguagens de alto nível e aquelas disponibilizadas pelo hardware dos computadores * PUCC GAP Semântico Desenvolver arquiteturas que diminuíssem a distância entre instruções de linguagem de alto nível e instruções de máquina. Características dessa Arquitetura: grande conjunto de instruções, vários modos de endereçamento e implementação de diversos comandos de linguagem de alto nível no hardware da máquina. * PUCC Características das HLL (LAN): operações Ocorrência dinâmica Instruções valor normalizado referência a memória atribuição Laços chamadas if outros Válido para arquiteturas CISC (Complex Instruction Set Computer) * PUCC Características das HLL (LAN): operandos segundo Patterson [PATT82a] a maioria das referências é de variáveis escalares sendo que mais de 80% dos escalares são locais; Pascal C Average Integer constant 16 23 20 Scalar variable 58 53 55 Array/structure 26 24 25 segundo Lunde [LUND77], cada instrução, em média, referencia 0.5 operandos na memória e 1.4 nos registradores; * PUCC Características das HLL (LAN): chamadas é a operação mais lenta nas linguagens de alto nível compiladas; segundo Tanenbaum [Tane78], 98% de chamadas dinâmicas passam menos de 6 argumentos e 92% usam menos de 6 variáveis locais; segundo Katevenis[KATE83], é raro existir uma longa seqüência de chamadas à procedimentos. * PUCC Implicações Deve-se otimizar os processos que consomem mais tempo. Deve-se usar um grande número de registradores (referência aos operandos) Uso de pipelines Simplified (reduced) instruction set * PUCC Uso de registradores os registradores são os dispositivos mais rápidos de armazenamento; deve-se criar uma estratégia para se manter os operandos mais freqüentemente acessados nos registradores; abordagem via hardware deve-se minimizar as operações de transferência de operandos da memória para registradores; * PUCC Abordagem via software visa deixar a tarefa de maximização de uso dos registradores para o compilador; o compilar irá tentar usar os registradores para armazenar as variáveis que serão usadas a maior parte do tempo; deve utilizar algoritmos sofisticados de análise de programas. * PUCC Abordagem via hardware uso de mais registradores para manter mais variáveis por mais tempo; deve-se organizar o uso destes registradores de forma a diminuir o número de acessos à memória principal. * PUCC Condições de contorno as variáveis locais devem ser salvas a cada chamada de nova sub-rotina; parâmetros devem ser passados para as sub-rotinas chamadas; no retorno da chamada as variáveis locais devem ser novamente carregadas e os resultados passados de volta; * PUCC Janelas de registradores Uma sub-rotina típica passa poucos parâmetros; O número de sub-rotinas chamadas é geralmente pequena; Múltiplos conjuntos de registradores são endereçados para diferentes sub-rotinas; Uma nova chamada faz com que o processador use automaticamente o próximo conjunto de registradores; Janelas de registradores de sub-rotinas adjacentes possuem uma superposição de registradores que são usados para se passar os parâmetros; * PUCC Janelas de registradores * PUCC Representação circular Implementações típicas usam 8 janelas de 16 registradores cada. se F for chamado, os conteúdo de A.in e A.loc devem ser salvos na memória neste caso, o valor de SWP deve ser alterado Ao passo que novas sub-rotinas são chamadas, o valor de CWP deve ser alterado * PUCC Variáveis Globais Uma possibilidade é usar endereçamento de memória para as variáveis globais; Outra possibilidade é o uso de registradores de uso exclusivo para variáveis globais; * PUCC Cache vs. Janela de registradores * PUCC Arquitetura CISC Conjunto com um grande número de instruções . Motivações: simplificação nos projetos de compiladores; aumento de desempenho de HLL. Em suma: dar melhor suporte as HLL. * PUCC Argumentos Conjunto com um grande número de instruções - dificultam a implementação de pipeline simplificação nos projetos de compiladores - o compilador deve encontrar os casos que combinam exatamente com a construção programas usando CISC são menores - porém os opcodes são maiores, produzindo maiores instruções. * PUCC Características da arquitetura RISC Uma instrução por ciclo Operações entre registradores Modos de endereçamento mais simples Formatos de instruções mais simples * PUCC Tornar as máquinas mais simples para que sejam mais velozes: Simplicidade: Poucas instruções, simples e com poucos formatos; Poucos modos de endereçamento; Usar apenas LOAD/STORE para movimentação de dados entre registradores e memória; Baseado em compiladores sofisticados para otimizar o código; Características RISC * PUCC Alcançar alto desempenho através de registradores rápidos, altas velocidades de CPU e otimização na compilação; Uma instrução por ciclo; Operações registrador a registrador; Formato fixo de instruções. Implementação mais eficiente Características RISC * PUCC RISC: MIPS, SPARC, Alpha, HP-PA, PowerPC, i860, i960. CISC: VAX, PDP-11, Intel i86, Motorola 68K. CISC com macro/micro-instruções RISC internas: Pentium, AMD Athlon. Exemplos * PUCC Complex Instruction Set Computer (CISC); CISC é caracterizada por usar um grande conjunto de instruções complexas, objetivando o uso mínimo de memória; Instruções típicas CISC incorporam complexos modos de endereçamento para os operandos; Máquinas CISC usualmente possuem número pequeno de registradores; Máquinas CISC foram, na maioria, construídas como microprogramadas, mas, recentemente, algumas têm implementado micro/macro-instruções RISC (executadas diretamente pelo hardware). RISC x CISC * PUCC Reduced Instruction Set Computer (RISC); RISC é caracterizada por usar um conjunto pequeno de simples instruções; Máquinas RISC usualmente utilizam apenas instruções Load e Store para acesso a memória; Máquinas RISC frequentemente possuem número elevado de registradores; Máquinas RISC têm sido construídas para que suas instruções sejam diretamente executadas pelo hardware (não há microcódigo). RISC x CISC * PUCC RISC vs. CISC Não existe ‘a melhor arquitetura’ Uma boa filosofia: usar o melhor dos dois
Compartilhar