Algumas características especiais Tópicos o Medidas de desempenho o CISC versus RISC o Arquiteturas Superescalares o Arquiteturas VLIW
Medidas de desempenho Desempenho é muito dependente da aplicação MIPS: Milhões de Instruções Por Segundo Uma tarefa Duas máquinas: n instruções diferentes MFLOPS: Milhões de Operações em Ponto Flutuante por Segundo Outras instruções consideradas overhead para as de ponto flutuante Whetstones: Benchmark sintético Programa para testar desempenho em ponto flutuante Dhrystones: Competidor do Whetstone Desenvolvido com ênfase em operações inteiras
Medidas de desempenho SPEC: System Performance Evaluation Cooperative Consórcio de empresas formado em 1987 Padrão SPEC-benchmark Um compilador Um programa de minimização lógica Uma planilha Outros programas com ênfase no processamento aritmético SPECint92 e SPECfp92 Todos os esforços para medir desempenho buscam dizer aos usuários quão bem um computador pode tratar sua carga de trabalho.
CISC versus RISC CISC: Complex Instruction Set Computer Muitas instruções complexas e vários modos de endereçamento Algumas instruções podem gastar vários ciclos sendo executadas Nem sempre é fácil achar a melhor instrução para uma tarefa RISC: Reduced Instruction Set Computer Poucas instruções simples e poucos modos de endereçamento Geralmente uma instrução por palavra Cálculos de endereços complexos pode durar várias instruções Geralmente acesso à memória com load-store, demais instruções referem-se a dados em um banco de registradores
Alguns fatores históricos As máquinas CISC não correspondem a uma filosofia de projeto O objetivo era fazer o máximo possível com uma única instrução Necessidade de compactação de código Chip de memória RAM de 16K custava US$500.00 HD de 40MB custava US$55,000.00 Compatibilidade entre gerações favorece complexidade Há o distanciamento semântico (semantic gap) entre código de máquina e instruções de alto nível. Acreditava-se que reduzindo esta diferença poder-se-ia melhorar o desempenho. Donald Knuth (1971) e David Patterson (1982) mostraram que não era bem assim: 85% dos programas consistiam em atribuições, testes e chamadas a procedimentos. O preço das memórias caiu significativamente e a pressão passou de fazer mais para fazer mais rápido.
Características de projeto de máquinas CISC Instruções complexas capazes de executar muitas operações Pela complexidade a execução de uma instrução pode durar muitos ciclos de relógio e cada instrução dura um número de ciclos diverso Devido à complexidade das instruções torna-se difícil implantar conceitos como o pipeline. O tamanho variável das instruções e as várias formas de endereçamento requerem unidades de busca e decodificação bastante complexas. Máquinas deste tipo têm como meta: faça do seu jeito. Exemplo: Instruções do VAX usavam de 0 a 3 operandos; ADD fi 2 ou 3 operandos em memória ou registrador.
Outras características de máquinas CISC Devido à grande variedade de modos de endereçamento, muitos cálculos são necessários para determinação dos operandos. Por utilizar instruções capazes de executar várias operações, o tráfego de instruções entre UCP e memória tende a ser pequeno. O tráfego de dados em uma máquina CISC tende a ser equivalente ao de uma máquina RISC pura.
Características de projeto de máquinas RISC Instruções simples podem ser executadas em poucos ciclos de relógio Simplicidade pode minimizar o ciclo do relógio Uma máquina pipeline pode ter uma instrução completada a cada ciclo de relógio Instruções de tamanho fixo simplificam os mecanismos de busca e decodificação Restrições podem incluir o início de uma instrução sem a finalização dos resultados da instrução anterior Executar incondicionalmente a instrução sucessora de um salto Iniciar a instrução seguinte sem completar a carga de um registrador
Outras características de máquinas RISC Busca prévia de instruções Execução pipeline início da execução de uma instrução antes da conclusão da anterior. Operação superescalar início da execução de mais de uma instrução simultaneamente. Saltos, armazenagem e cargas retardados Os operandos podem não estar disponíveis quando uma operação tentar acessa-los. Uso de janelas de registradores capacidade de mudar o conjunto de registradores da UCP com um único comando, para aliviar a sobrecarga com chamada e retorno de sub-rotinas.
CISC versus RISC Por utilizar instruções mais simples, uma determinada tarefa requer a execução de mais instruções em máquinas RISC do que em máquinas CISC. Executando mais instruções, uma máquina puramente RISC deve ter um tráfego de dados equivalente ao de uma máquina CISC para a execução de uma mesma tarefa, mas certamente o tráfego de instruções será menor nesta que naquela. Conclusão: Se uma máquina CISC tradicional não tem o melhor desempenho, o de uma máquina puramente RISC também deixa a desejar.
CISC versus RISC Exemplo: Máquina RISC básica sem divisão inteira Divisão inteira não cabe em um só ciclo de relógio Arquitetura tem um passo de divisão Para dividir inteiros de 32 bits inicializam-se registradores com os valores do divisor, do dividendo e do quociente e executam-se 32 passos consecutivos de divisão. Sem laços e sem saltos, tem-se uma instrução executada por ciclo de relógio. O resultado é o ideal para uma RISC-pipeline, mas será esta a melhor solução?
CISC versus RISC A solução aumenta o tempo de execução da divisão de alguns ciclos, em uma máquina CISC, para 32 ciclos em uma RISC. Devido ao esvaziamento do pipeline por alguns ciclos no caso CISC, o número de ciclos por instrução pode ser maior, mas o desempenho final será melhor que na solução dada ao RISC. Porque não tirar proveito de algumas soluções CISC em máquinas RISC?
CISC versus RISC Outro problema das máquinas RISC, mencionado, é o grande tráfego de instruções. A solução é utilizar o espaço liberado pela lógica extra de decodificação, necessária em máquinas CISC, incluindo no seu lugar uma memória cache de instruções.
Conceitos-chave: CISC versus RISC Uma máquina RISC geralmente tem menos instruções do que uma CISC, e elas são sempre mais simples. Operações aritméticas que exigem vários passos são confinadas a certas unidades especiais. Todas as máquinas RISC são do tipo load-store. Operações aritméticas referenciam apenas valores em registradores. Formatos de instrução regulares e em pouca variedade, bem como modos de endereçamento limitados, possibilitam rápidas decodificação da instrução e determinação dos operandos. Atrasos nos saltos são típicos em máquinas RISC e tem origem no modo como um pipeline processa instruções de salto.
Paralelismo no nível de instruções No caso ideal, um pipeline utiliza aproximadamente um ciclo de relógio para executar cada instrução (1 CPI). Como reduzir o número de ciclos gastos para a execução de cada instrução? A tecnologia atual sugere que seja possível a execução de cinco a dez instruções por ciclo de relógio. Abordagens fortemente pipelinezadas: Máquinas superescalares Máquinas superpipeline Máquinas com palavra de instrução muito longa (VLIW)
Máquinas superescalares Origem do termo: Máquinas seriais (escalares) x paralelas (vetoriais) Máquina superescalar seria uma máquina escalar com desempenho superior. Decodificam várias instruções em um único ciclo. Executam tantas instruções por ciclo de relógio quantas forem possíveis. Utilizam várias unidades funcionais operando em paralelo, por exemplo: 1 salto, 1 UPF, 2 ULAs.
Máquinas superpipeline Variação da superescalar na qual a decodificação e execução de várias instruções por ciclo de relógio baseia-se na existência de um relógio secundário, mais rápido que o relógio global do sistema. Para executar N instruções por ciclo, utiliza um relógio de despacho N vezes mais rápido que o relógio principal. Seu funcionamento baseia-se, também, na existência de vários pipelines internos, para onde as instruções são despachadas. Do ponto de vista do programador não há diferença entre uma superescalar e uma superpipeline.
Máquinas VLIW (Very Long Instruction Word) Usando uma palavra longa as instruções dessas máquinas contêm campos que controlam, diretamente, várias unidades aritméticas e outros recursos da máquina. As instruções são decodificadas diretamente pelo hardware, dando ao programador controle sobre muitos recursos da máquina. Grande potencial para aumento de desempenho do código normal. Apresenta problemas com saltos condicionais, pois muitos recursos podem ficar ociosos, já que as instruções de uma palavra são executadas juntas em um só ciclo da máquina.
Resumo A relação custo/desempenho de uma máquina é chave para a sua aquisição. Desempenho pode ser medido de vários modos: MIPS, MFLOPS, Whetstone, Dhrystone, SPEC benchmarks. Máquinas CISC têm instruções que fazem mais. Tamanho da palavraq de isntrução pode variar muito Modos de endereçamento favorecem tráfego de memória Máquinas RISC normalmente têm: Uma palavra por instrução Acesso à memória apenas via load-store Instruções e modos de endereçamento simples Períodos de relógio menores, pré-busca, etc.