Agenda •Máquinas RISC PUCC 1 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 2 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 3 Características das HLL (LAN): operações Ocorrência dinâmica Pascal atribuição Laços chamadas if outros C Instruções valor normalizado Pascal C referência a memória Pascal C 45 38 13 13 14 15 5 3 42 32 33 26 15 31 33 44 45 contagem12 normalizada Multiplicação do 29 43 11 21 7 13 do número número pelo número de ocorrências 6 de 1 3 1 2 1 de referências pelo número de ocorrências instruções produzidas à memória ao se pelo compilador executar o normalizada pelo Válido para arquiteturas CISC (Complex Instruction Set Computer) programa número de instruções por comando HLL 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; Integer constant Scalar variable Array/structure Pascal C Average 16 58 26 23 53 24 20 55 25 • segundo Lunde [LUND77], cada instrução, em média, referencia 0.5 operandos na memória e 1.4 nos registradores; A arquitetura deve possibilitar o rápido acesso aos operandos. 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. As referências aos operandos são altamente localizadas. 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; • deve-se minimizar as operações de transferência de operandos da memória para registradores; abordagem via software PUCC abordagem via hardware 8 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 9 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 10 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 11 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 12 Janelas de registradores Em um dado instante de tempo só um conjunto de registradores é visível, Com a sobreposição, como se só existisse ele. pode-se passar argumentos sem o movimento de dados; Parâmetros passados pela subA janela é dividida em 3 áreas: rotina do nível J Usado para se passar argumentos para o próximo nível Variáveis de uso local PUCC 13 Representação circular 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 Implementações típicas usam 8 janelas de 16 registradores cada. PUCC Ao passo que novas sub-rotinas são chamadas, o valor de CWP deve ser alterado 14 Variáveis Globais Uma possibilidade é usar endereçamento de memória para as variáveis globais; Ineficiente para variáveis globais muito usadas Outra possibilidade é o uso de registradores de uso exclusivo para variáveis globais; Aumento de processamento para se diferenciar os endereços dos registradores PUCC 15 Cache vs. Janela de registradores Referência a um escalar. PUCC 16 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 17 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 18 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 19 Características RISC • 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; PUCC 20 Características RISC • 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 PUCC 21 Exemplos • 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. PUCC 22 RISC x CISC • 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). PUCC 23 RISC x CISC • 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). PUCC 24 RISC vs. CISC Não existe ‘a melhor arquitetura’ Uma boa filosofia: usar o melhor dos dois PUCC 25