Prévia do material em texto
1 Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Introdução à Arquitetura de Computadores Anderson Oliveira da Silva Ph. D. Ciências em Informática Engenheiro de Computação anderson@inf.puc-rio.br Departamento de Informática PUC-Rio 2 Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Parte II – Unidade Central de Processamento Computadores com Conjunto Reduzido de Instruções – Características da Execução de Instruções » Operações, Operandos, Chamadas de Procedimentos – Uso de um Grande Banco de Registradores » Janelas de Registradores, Variáveis Globais, Registradores x Cache – Otimização de Registradores baseada em Compiladores » Estratégias para maximizar o uso dos registradores – Arquitetura RISC » Principais características da arquitetura RISC » CISC x RISC – Pipeline no RISC » Pipeline com instruções regulares » Otimização de pipeline 3 Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Unidade Central de Processamento 4 Computadores com Conjunto Reduzido de Instruções Durante o projeto de um processador, os projetistas precisam determinar as características do conjunto de instruções e dos recursos técnicos para otimizar a execução das instruções: – Número de instruções – Tamanho das instruções (bytes) – Modos de endereçamento – Número de registradores de uso geral – Quantidade de memória cache – Número de estágios do pipeline Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 5 Computadores com Conjunto Reduzido de Instruções Características de alguns processadores CISC e RISC: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 Computadores com Conjunto Complexo de Instruções (CISC) Computadores com Conjunto Reduzido de Instruções (RISC) Modelo IBM 370/168 VAX 11/780 Intel 80486 SPARC MIPS R4000 Ano 1973 1978 1989 1987 1991 Número de instruções 208 303 235 69 94 Tamanho da instrução (bytes) 2-6 2-57 1-11 4 4 Modos de endereçamento 4 22 11 1 1 Número de registradores de uso geral 16 16 8 40-520 32 6 Computadores com Conjunto Reduzido de Instruções Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Por que os projetistas dos computadores CISC e RISC criaram arquiteturas com características tão diferentes? Essa diferença torna uma arquitetura mais eficiente do que a outra para executar os programas construídos pelos programadores? 7 Computadores com Conjunto Reduzido de Instruções Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Para respondermos estas perguntas, precisamos conhecer um pouco mais sobre a execução das instruções e sobre a construção dos programas... 8 Computadores com Conjunto Reduzido de Instruções Características da execução de instruções: – Os aspectos de interesse computacional são: – Operações efetuadas: determinam as funções a serem efetuadas pelo processador e a sua interação com a memória. – Operandos usados: os tipos de operandos e a frequência de uso determinam a organização da memória para fazer o armazenamento e os modos de endereçamento para prover o acesso aos operandos. – Sequência da execução: determina a organização e o controle do pipeline. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 9 Computadores com Conjunto Reduzido de Instruções Características da execução de instruções: – O estudo de (PATTERSON E SEQUIN, 1982a) verificou a frequência relativa de ocorrência de várias instruções das linguagens de programação de alto nível (Pascal e C) em uma série de programas: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Ocorrência Instruções de máquina ponderada Referências à memória ponderada Pascal C Pascal C Pascal C Atribuição 45% 38% 13% 13% 14% 15% Loop 5% 3% 42% 32% 33% 26% Chamada 15% 12% 31% 33% 44% 45% IF 29% 43% 11% 21% 7% 13% GOTO - 3% - - - - Outro 6% 1% 3% 1% 2% 1% (PATTERSON E SEQUIN, 1982a) Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 10 Computadores com Conjunto Reduzido de Instruções Características da execução de instruções: – O estudo de Patterson e Sequin (1982a) também analisou a frequência dinâmica de ocorrência de classes de variáveis. Porcentgem dinâmica de operandos Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Pascal C Média Constante Inteira 16% 23% 20% Variável escalar 58% 53% 55% Array / Estrutura 26% 24% 25% (PATTERSON E SEQUIN, 1982a) Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 11 Computadores com Conjunto Reduzido de Instruções Características da execução de instruções: – As chamadas e os retornos de procedimento são um aspecto dos programas em alto nível. Argumentos de procedimentos e variáveis locais Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Porcentagem de chamadas de procedimento executadas com: Compiladores, interpretadores e editores de texto Pequenos programas não numéricos > 3 argumentos 0-7% 0-5% > 5 argumentos 0-3% 0% > 8 palavras de argumentos e escalares locais 1-20% 0-6% > 12 palavras de argumentos e escalares locais 1-6% 0-3% (PATTERSON E SEQUIN, 1982a) Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 12 Computadores com Conjunto Reduzido de Instruções Conclusões: – Vários grupos que analisaram resultados semelhantes concluíram que a tentativa de criar uma arquitetura com um conjunto de instruções parecido com as linguagens de programação de alto nível não é a estratégia de um projeto mais eficaz. – As linguagens de programação de alto nível podem ser mais bem suportadas por técnicas de otimização de desempenho clássicas, que não dependem da arquitetura do conjunto de instruções. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 13 Computadores com Conjunto Reduzido de Instruções Três elementos caracterizam a arquitetura RISC: – Uso de um grande número de registradores. » O objetivo é otimizar a referência a operandos (na maioria, escalares). » O desempenho pode ser melhorado com redução de referências à memória, à custa de mais referências a registradores. – Atenção cuidadosa ao projeto de pipeline de instruções. » Requer o uso de técnicas para minimizar os impactos gerados pelas instruções de desvio e de chamadas de procedimento. – Conjunto de instruções com foco no alto desempenho. » As instruções devem ter custos previsíveis (medidos em tempo de execução, tamanho de código e dissipação de energia). Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 14 Computadores com Conjunto Reduzido de Instruções Uso de um grande banco de registradores – A razão pela qual o armazenamento em registradores é indicado é que esse é o dispositivo de armazenamento mais rápido disponível, mais rápido que a memória principal e que a cache. – Duas abordagens básicas são possíveis: » Abordagem em software: depende do compilador para maximizar o uso de registradores. » Abordagem de hardware: disponibiliza mais registradores para que mais variáveis possam ser guardadas em registradores por mais tempo. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 15 Computadores com Conjunto Reduzido de Instruções Abordagem de HW: Janelas de registradores – Sobreposição das janelas de registradores: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 16 Computadores com Conjunto Reduzido de Instruções Abordagem de HW: Janelas de registradores – Organização do buffer circular de janelas sobrepostas: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores,Willian Stallings, 10a edição - Editora Pearson - 2018 17 Computadores com Conjunto Reduzido de Instruções Abordagem de HW: Variáveis globais – São atribuídas a posições de memória pelo compilador e todas as instruções de máquina que referenciam essas variáveis usam operandos referenciados em memória. – Uma alternativa é incorporar um conjunto de registradores globais no processador. – Esses registradores seriam em número fixo e estariam disponíveis para todos os procedimentos. – Um esquema uniforme de numeração pode ser usado para simplificar o formato da instrução. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 18 Computadores com Conjunto Reduzido de Instruções Grande banco de registradores versus Cache – O banco de registradores, organizado em janelas, age como um pequeno buffer para guardar variáveis. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Grandes bancos de registradores Cache Todas as variáveis locais escalares Variáveis locais recentemente usadas Variáveis individuais Blocos de memória Variáveis globais assinaladas pelo compilador Variáveis globais recentemente usadas Salvar/restaurar baseados na profundidade de aninhamento do procedimento Salvar/restaurar baseado no algoritmos de atualização da cache Endereçamento de registrador Endereçamento de memória Múltiplos operandos endereçados e acessados em um ciclo Um operando endereçado e acessado por ciclo Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 19 Computadores com Conjunto Reduzido de Instruções Grande banco de registradores versus Cache – Banco de registradores baseado em janelas: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 Operando da instrução referencia um registrador (R) que fornece acesso direto ao operando. 20 Computadores com Conjunto Reduzido de Instruções Grande banco de registradores versus Cache – Cache: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 Operando da instrução referencia um endereço de memória (A) cuja base é usada para referenciar a memória cache (rótulo) para determinar se o dado está presente (hit) ou ausente (miss). No caso de hit, o dado é acessado e copiado para a unidade destino. No caso de um miss, a cache precisará ser atualizada antes de fornecer o dado, que será então copiado para a unidade destino. 21 Computadores com Conjunto Reduzido de Instruções Arquitetura com conjunto reduzido de instruções – As características mais comuns, encontradas em todos os computadores com conjunto reduzido de instruções, são: » Uma instrução por ciclo. » Operações registrador para registrador. » Modos de endereçamento simples. » Formatos de instruções simples. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 22 Computadores com Conjunto Reduzido de Instruções Arquitetura com conjunto reduzido de instruções – Um ciclo de máquina é definido como o tempo necessário para obter dois operandos dos registradores, executar uma operação da ALU e armazenar o resultado em um registrador. » Com instruções simples de ciclo único, há pouca ou nenhuma necessidade de microcódigo. – A maioria das operações é registrador para registrador, com apenas operações simples LOAD e STORE acessando a memória. » Esse recurso de projeto simplifica o conjunto de instruções e, portanto, também a unidade de controle. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 23 Computadores com Conjunto Reduzido de Instruções Arquitetura com conjunto reduzido de instruções – Usa modos de endereçamento simples baseados em acesso direto à memória. » Esse recurso de projeto também simplifica o conjunto de instruções e a unidade de controle. – Adota formatos de instruções simples. » Em geral, apenas um ou alguns poucos formatos são usados. » O tamanho da instrução é fixo e ajustado dentro do limite da palavra. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 24 Computadores com Conjunto Reduzido de Instruções Arquitetura com conjunto reduzido de instruções – Outra característica é que a posição de campos, sobretudo o opcode, é fixa. – Os principais benefícios são: » Com campos fixos, a decodificação de opcode e o acesso a registradores de operandos podem ocorrer ao mesmo tempo. » Formatos simples simplificam a unidade de controle (economia de energia). » A leitura de instruções é otimizada, porque são obtidas unidades do tamanho da palavra. » Uma única instrução não ultrapassa os limites da página de memória. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 25 Computadores com Conjunto Reduzido de Instruções Características CISC versus RISC – 8 RISC, 5 CISC e 2 RISC com características CISC. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 26 Computadores com Conjunto Reduzido de Instruções Características CISC versus RISC Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br CISC RISC Programas em linguagem de máquina pequenos Programas em linguagem de máquina grandes Menos espaço de memória para armazenamento de programas Mais espaço de memória para armazenamento de programas Unidade de controle mais complexa Unidade de controle mais simples Mais consumo de ciclos de máquina por instrução Menos consumo de ciclos de máquina por instrução Mais consumo de energia para execução de instrução Menos consumo de energia para execução de instrução 27 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Pipeline com instruções regulares – A maioria das instruções é do tipo registrador para registrador e o ciclo de instruções possui os dois estágios a seguir: » I: busca da instrução. » E: execução. – Para operações de carregar e armazenar: » I: busca da instrução. » E: execução. » D: memória. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 28 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Pipeline com instruções regulares – Os efeitos do pipeline: Execução sequencial Temporização do pipeline em dois estágios Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br No exemplo de pipeline com dois estágios, podemos destacar dois pontos: 1. O pipeline sofre atraso quando a instrução requer acesso a um endereço de memória; 2. Para evitar a bolha no pipeline, a instrução NOOP é adicionada após a instrução de desvio condicional Branch X. Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 29 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Pipeline com instruções regulares – Os efeitos do pipeline: Temporização do pipeline em três estágios Temporização do pipeline em quatro estágios Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Em ambos os exemplos, a instrução NOOP é utilizada para (i) suprir os atrasos das instruções que fazem acesso a endereço de memória; e (ii) evitar a bolha no pipeline provocado pelo desvio condicional (Branch X). Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 30 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline – O desvio atrasado (delayed branch) é uma maneira de aumentar a eficiência do pipeline. – Faz uso de um desvio que não tem efeito até depois da execução da instrução seguinte (por isso o termo atrasado). – A posição da instruçãoimediatamente depois do desvio é referida como slot de atraso (delay slot). Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 31 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline – Desvio Normal e Desvio Atrasado: Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 Instruções serão carregadas no pipeline Instruções não serão carregadas no pipeline Instruções não serão carregadas no pipeline 32 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline – Desvio Normal – Pipeline Tradicional: » Quando o JUMP é executado, deve-se descarregar a pipeline com a instrução ADD rA,rB. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 33 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline – Desvio Atrasado – Pipeline RISC com adição de NOOP: » Quando o JUMP é executado, não há necessidade de descarregar a pipeline com a instrução NOOP. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 34 Pipeline no RISC: Otimização de pipeline – Desvio Atrasado – Instruções invertidas: » Quando o JUMP é executado, a instrução ADD 1,rA, que foi invertida com o JUMP, não é descarregada. Computadores com Conjunto Reduzido de Instruções Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 35 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline – O load atrasado (delayed load) é uma tática semelhante que pode ser usada em instruções LOAD. – O registrador é bloqueado pelo processador. – O processador então continua a execução do fluxo de instruções até que alcance uma instrução que precisa desse registrador. » Se a instrução seguinte depender do resultado do load, então, pode-se colocar uma instrução NOOP entre as instruções para que o load possa ser completado antes do uso do registrador. – Se o compilador puder rearranjar as instruções para que um trabalho útil possa ser feito enquanto ocorre leitura dentro do pipeline, a eficiência será aumentada. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 36 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline (compilador) – O desdobramento de loop (loop unrolling) visa a replicar o corpo de um loop em um número de vezes chamado de fator de desdobramento (u) e fazer a iteração pelo passo u em vez de pelo passo 1. – Desdobrar pode melhorar o desempenho: » Reduzindo a sobrecarga do loop. » Aumentando o paralelismo de instruções. » Melhorando a localidade de registradores, cache de dados ou TLB. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br 37 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline (compilador) – Exemplo de desdobramento de loop (u = 2): Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br Fonte: Arquitetura e Organização de Computadores, Willian Stallings, 10a edição - Editora Pearson - 2018 38 Computadores com Conjunto Reduzido de Instruções Pipeline no RISC: Otimização de pipeline (compilador) – Exemplo de desdobramento de loop (u = 2): » A sobrecarga do loop é cortada pela metade pois duas iterações são executadas antes do teste e o desvio é feito no topo do loop. » O paralelismo de instrução aumenta pois a segunda atribuição pode ser efetuada enquanto os resultados da primeira estão sendo armazenados e as variáveis do loop estão sendo atualizadas. » Se os elementos do array forem atribuídos a registradores, a otimização é ainda maior pois a[i] e a[i+1] são usados duas vezes no corpo do loop. Prof. Anderson Oliveira da Silva - anderson@inf.puc-rio.br