RISC x CISC RISC Reduced Instruction Set Computers

  • Slides: 23
Download presentation
RISC x CISC RISC: Reduced Instruction Set Computers CISC: Complex Instruction Set Computer

RISC x CISC RISC: Reduced Instruction Set Computers CISC: Complex Instruction Set Computer

Maiores Avanços nos Computadores I/II • Conceito de família – Introduzido por IBM com

Maiores Avanços nos Computadores I/II • Conceito de família – Introduzido por IBM com System/360 em 1964 – Seguido por DEC com PDP-8 (DEC atual HP) – Arquitetura da máquina separada da implementação – Diferentes computadores (com performance e preços diferentes) que utilizam a mesma arquitetura com diferentes implementações

 • Unidade de controle microprogramada – Idéia de Wilkes em 1951 – Produzida

• Unidade de controle microprogramada – Idéia de Wilkes em 1951 – Produzida pela IBM com S/360 em 1964 – Facilita o design e a implementação da UC (Unidade de Controle: controla as operações da UCP, ALU, . . . ) • Memória cache – Introduzido por IBM com S/360 modelo 85 em 1969 – Mudou a performance drasticamente

Maiores Avanços nos Computadores I/II • Pipelining – Introduz paralelismo no ciclo de busca

Maiores Avanços nos Computadores I/II • Pipelining – Introduz paralelismo no ciclo de busca e execução • Múltiplos processadores • Arquitetura de computadores com conjunto de instruções reduzido (RISC)

Desenvolvimento de Máquinas CISC • Custos de software excedem os custos de hardware •

Desenvolvimento de Máquinas CISC • Custos de software excedem os custos de hardware • Linguagens de alto nível cada vez mais complexas • Gap semântico: diferença entre as operações providas pelas linguagens e aquelas computadas pela arquitetura. (aumento da complexidade dos compiladores) • Leva a : – Grande conjunto de instruções – Implementações em hardware de instruções de linguagem de alto nível • Exemplo, CASE no VAX

Objetivos da Arquitetura CISC • Facilitar o desenvolvimento de compiladores • Melhorar a eficiência

Objetivos da Arquitetura CISC • Facilitar o desenvolvimento de compiladores • Melhorar a eficiência de execução – Operações complexas implementadas em microcódigo • Suportar linguagens ainda mais complexas

Estudo para criação da RISC • Estudos foram realizados baseados em programas escritos em

Estudo para criação da RISC • Estudos foram realizados baseados em programas escritos em linguagens de alto nível • Estudos dinâmicos realizados durante a execução do programa O que foi analisado? Características da execução • Operações executadas pela UCP • Operandos utilizados – Tipo dos operandos e a freqüência determina como a memória deve estar organizada e qual deve ser o modo de endereçamento • Seqüência de execução – Determina o controle e a organização do pipeline

Operações • Maioria das operações são atribuições (A=B) – Movimento de dados • Em

Operações • Maioria das operações são atribuições (A=B) – Movimento de dados • Em seguida vêm as instruções condicionais (IF, LOOP) – Controle da seqüência é importante • Chamada e retorno de procedimento consome muito tempo • Algumas instruções da linguagem de alto nível levam a muitas operações de linguagem de máquina

Freqüência Dinâmica Relativa Ponderada de Operações de Linguagens de Alto Nível Ocorrência Dinâmica Ponderada

Freqüência Dinâmica Relativa Ponderada de Operações de Linguagens de Alto Nível Ocorrência Dinâmica Ponderada por instrução de máquina Ponderada por referência à memória Pascal C ASSIGN 45% 38% 13% 14% 15% LOOP 5% 3% 42% 33% 26% CALL 15% 12% 31% 33% 44% 45% IF 29% 43% 11% 21% 7% 13% GOTO — 3% — — OTHER 6% 1% 3% 1% 2% 1%

Operandos • Uso principalmente de variáveis locais • Conclusão: otimização deve se concentrar no

Operandos • Uso principalmente de variáveis locais • Conclusão: otimização deve se concentrar no acesso às variáveis locais Pascal C Média Constante Inteira 16% 23% 20% Variável 58% 53% 55% Array/Structure 26% 24% 25%

Chamadas de Procedimentos • Depende do número de parâmetros • Depende do nível de

Chamadas de Procedimentos • Depende do número de parâmetros • Depende do nível de aninhamento • Consome muito tempo • Maioria das variáveis são locais (poucas variáveis são passadas como parâmetro) • Profundidade do aninhamento não costumar ser grande

Conclusão dos Estudos • Suporte mais eficaz para linguagens de alto nível pode ser

Conclusão dos Estudos • Suporte mais eficaz para linguagens de alto nível pode ser obtido pela otimização do desempenho das características mais utilizadas e responsáveis por maior consumo de tempo • Número grande de registradores – Otimizar a referência aos operandos • Projeto cuidadoso dos pipelines – Devido ao grande uso de condições de desvio e chamadas de procedimentos – Solução: Predição de desvio etc. • Conjunto simplificado (reduzido) de instruções

Uso de um Grande Banco de Registradores • Solução baseada em software – Compilador

Uso de um Grande Banco de Registradores • Solução baseada em software – Compilador responsável por otimizar uso dos registradores – Tenta alocar, nos registradores, variáveis que serão mais usadas durante um determinado período de tempo – Necessita análise sofisticada dos programas • Solução baseada em hardware – Utilizar um número maior de registradores – Permite que mais variáveis possam ser armazenadas em registradores

Registradores para Variáveis Locais • Maioria das referências a variáveis locais, então: – Variáveis

Registradores para Variáveis Locais • Maioria das referências a variáveis locais, então: – Variáveis locais devem ser armazenadas em registradores – Reduz acesso à memória • A definição de local muda com cada chamada a procedimento • Quando ocorre uma chamada: – Variáveis locais devem ser armazenadas na memória – Registradores podem ser reutilizados – Parâmetros devem ser passados para procedimento chamado – Resultados devem ser retornados para o programa pai • Quando o controle volta ao programa pai: – Valores das variáveis salvos na memória devem ser retornados aos registradores

Variáveis Globais • Alocadas pelo compilador na memória – Ineficiente para variáveis usadas freqüentemente

Variáveis Globais • Alocadas pelo compilador na memória – Ineficiente para variáveis usadas freqüentemente • Pequeno conjunto de registradores para variáveis globais

Otimização do Uso de Registradores feita pelos Compiladores • Suponha um pequeno número de

Otimização do Uso de Registradores feita pelos Compiladores • Suponha um pequeno número de registradores (1632) • Otimização do uso deve ser função do compilador • Programas em linguagem de alto nível não fazem referências explícitas a registradores • Atribui registrador simbólico ou virtual a cada variável candidata • Mapeia número ilimitado de registradores simbólicos em número fixo de registradores reais • Registradores simbólicos que não se sobrepõem podem compartilhar registradores reais • Caso se esgotem os registradores reais disponíveis, algumas variáveis são alocadas na memória

RISC • Reduced Instruction Set Computer • Características importantes: – Grande número de registradores

RISC • Reduced Instruction Set Computer • Características importantes: – Grande número de registradores de propósito geral – Ou uso de tecnologia para que compiladores otimizem uso dos registradores – Conjunto limitado e simples de instruções – Ênfase na otimização de pipeline das instruções

Porque CISC (1)? • Simplificação do compilador? – Por um lado, mapeamento “direto” entre

Porque CISC (1)? • Simplificação do compilador? – Por um lado, mapeamento “direto” entre a instrução da ling. de alto nível e a instrução de máquina – Por outro lado, difícil de encontrar a instrução de máquina que se adéqüe exatamente a instrução da ling. de alto nível – Otimização mais difícil com instruções complexas • Programas menores? – Por um lado, usam menos memória • Porém memória se tornou mais barata – Por outro lado, podem parecer menores em forma simbólica (tem menos instruções), mas podem ocupar muitos bits na memória

Porque CISC (2)? • Programas mais rápidos ? – Tendência em usar instruções mais

Porque CISC (2)? • Programas mais rápidos ? – Tendência em usar instruções mais simples – Unidade de controle mais complexa e mais memória fazem com que aumente o tempo de execução das instruções mais simples • Não está claro que a arquitetura CISC é a solução apropriada

Características da RISC • Uma instrução por ciclo de máquina – Ciclo de máquina

Características da RISC • Uma instrução por ciclo de máquina – Ciclo de máquina é o tempo para buscar dois operandos em registradores, executar uma operação de ULA e armazenar resultado em registrador • Maioria das operações são de registrador para registrador – Exceto lw e sw • Poucos e simples modos de endereçamento • Formato fixo das instruções • Compiladores devem despender mais tempo e esforço

Controvérsia (1) • Quantitativa – Comparar tamanho dos programas e velocidades de execução •

Controvérsia (1) • Quantitativa – Comparar tamanho dos programas e velocidades de execução • Qualitativa – Examinar suporte a linguagem de alto nível e uso ideal da tecnologia VLSI (Very-Large Scale Integration: circuitos integrados) • Problemas – Não existem duas máquinas RISC e CISC que sejam diretamente comparáveis – Não existe um conjunto definitivo de programas para teste – Difícil separar efeitos do hardware dos efeitos do compilador

Controvérsia (2) • Problemas. . . – Maioria das comparações realizadas em máquinas experimentais

Controvérsia (2) • Problemas. . . – Maioria das comparações realizadas em máquinas experimentais e não comerciais – Maioria das máquinas comercias possuem uma mistura de características • Muitos projetos atualmente incorporam características CISC e RISC • Power. PC – RISC que incorpora características CISC • Pentium II – CISC que incorpora características RISC

Comparação de processadores

Comparação de processadores