240 likes | 437 Views
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 System/360 em 1964 Seguido por DEC com PDP-8 (DEC atual HP)
E N D
RISC x CISC RISC: ReducedInstruction Set Computers CISC: ComplexInstruction Set Computer
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 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 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 • 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 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 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 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 por instrução de máquina Ponderada por referência à memória Pascal C Pascal C Pascal C ASSIGN 45% 38% 13% 13% 14% 15% LOOP 5% 3% 42% 32% 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 Pascal C Média Constante Inteira 16% 23% 20% Variável 58% 53% 55% Array/Structure 26% 24% 25% • Uso principalmente de variáveis locais • Conclusão: otimização deve se concentrar no acesso às variáveis locais
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 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 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 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 • Pequeno conjunto de registradores para variáveis globais
Otimização do Uso de Registradores feita pelos Compiladores • Suponha um pequeno número de registradores (16-32) • 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 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 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 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 é 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 • 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 e não comerciais • Maioria das máquinas comercias possuem uma mistura de características • Muitos projetos atualmente incorporam características CISC e RISC • PowerPC – RISC que incorpora características CISC • Pentium II – CISC que incorpora características RISC