0. Introdução.

Slides:



Advertisements
Apresentações semelhantes
Arquitectura de Computadores 2004/05
Advertisements

Ch Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2004s2 Desempenho.
PIPELINE (continuação).
Arquitetura de Computadores
WebDesign Redes de Computadores Aula 05
WebDesign Redes de Computadores Aula 07
Ch Morgan Kaufmann Publishers Paulo C. Centoducatte Desempenho.
Arquitetura e organização de computadores.
Aula 06: Introdução ao Pipelining, Hazards Estruturais e Forwarding
Aula 08: Execução Multiciclo e MIPS R4000
O Conjunto de Instruções
Avaliação do desempenho
1 Arquitectura de Computadores II Ano lectivo 2008/09
Introdução Arquitectura com unidade de controlo uniciclo.
Aritmética Aceleração da adição.
Arquitectura de Computadores II Paulo Marques Departamento de Eng. Informática Universidade de Coimbra 2004/ Tendências Actuais.
Arquitectura de Computadores II Paulo Marques Departamento de Eng. Informática Universidade de Coimbra 2004/ BUS e Armazenamento.
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes
ARQUITETURAS RISC E CISC
Exemplo de arquitetura registrador-registrador- MIPS
MIPS PIPELINE.
MIPS MULTICICLO Fluxo de Dados e Controle
Processador Fluxo de Dados e Controle
Arquitetura de Sistemas Operacionais
Processo de Pipelining (exemplo da lavanderia)
MC542 Organização de Computadores Teoria e Prática
MC542 Organização de Computadores Teoria e Prática
Arquiteturas Diferentes
Pipeline.
CISC e RISC.
SSC114 Arquitetura de Computadores Pipeline - Predição de desvios
SSC144 Arquitetura de Computadores Introdução
SSC114 Arquitetura de Computadores Pipeline - Desempenho
Rganização de Computadores Melhorias de Desempenho com Pipelines Capítulo 6 – Patterson & Hennessy Organização de Computadores Melhorias de Desempenho.
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Implementando um Montador com LEX e YACC - 3
Multiplicador e Forwarding no MIPS
1998 Morgan Kaufmann Publishers Ch5B-1 O Processador: Via de Dados e Controle (Parte C: microprogramação)
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
Programação Baseada em Objectos Desenho de TAD
Arquitecturas RISC Arquitectura e Conjunto de Instruções
Y86: Encadeamento de Instruções (PIPE-)
Processadores – Aula 3 Professor: André Luis Meneses Silva
Processadores – Aula 3 Professor: André Luis Meneses Silva
Introdução à Programação
Arquitectura de Computadores II
PROGRAMAÇÃO I UNIDADE 1.
Prof. Felipe Ferreira de Oliveira
Funcionamento básico de um computador
Pipeline O throughput de um pipeline é determinado pela freqüência com que uma instrução sai do pipeline. Todos os estágios devem estar prontos ao mesmo.
Arquitetura de computadores
Arquitetura de computadores
Organização e Arquitetura de Computadores
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Processamento de dados na UCP e memória UCP
Contextualização de Paralelismo em nível de instrução
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Reduced Instruction Set Computer 6.
Arquitectura de Computadores II Paulo Marques Departamento de Eng. Informática Universidade de Coimbra 2004/ Aspectos sobre Desempenho.
Parte 3 Seção de Dados e Unidade de Controle
Conceitos Avançados de Arquitetura de Computadores Arquiteturas RISC Arquiteturas Superpipeline e Superescalares.
1  1998 Morgan Kaufmann Publishers Paulo C. Centoducatte – MC542 - IC/Unicamp- 2006s Prof. Paulo Cesar Centoducatte
Processador MAC-1 Arquitectura.
Aula Introdutória Universidade Federal de Uberlândia Faculdade de Computação Prof. Dr. rer. nat. Daniel D. Abdala GSI013 – Arq. e Org. de Computadores.
Introdução ao Processamento Vetorial
Organização de Computadores Implementação da UCP Construção do caminho de dados Controle Implementação monociclo.
 Evolução constante das linguagens de programação de alto nível (LAN) desde o Fortran (primeira LAN)  Surgimento de novos paradigmas como a OO, Orientação.
TRABALHO AVALIATIVO ALUNO: FRANCISCO HELIÉSUS DE MEDEIROS MATÉRIA: ORGANIZAÇÃO DE COMPUTADORES.
Construção de Via de dados Trabalho Avaliativo do Primeiro Bimestre. Marcos André de Sena Silva.
Transcrição da apresentação:

0. Introdução

Programa Aspectos quantitativos no desenho de sistemas Pipelining Avançado Caches e hierarquia de memória Arquitectura de alguns processadores modernos Sistema de Entrada/Saída Multiprocessadores e Clusters

Modelo de Funcionamento Aulas Teóricas Conceitos teóricos sobre arquitectura de computadores Discussão de artigos que serão fornecidos Aulas práticas Apoio à realização dos mini-projectos (grupos de 2) Realização de dois mini-testes (devidamente anunciados) Avaliação Exame / Exame de Recurso: 12 valores (min=5) 2 Mini-testes: 2 valores (min=0) 4 Mini-projectos: 6 valores (min=2) Casos especiais Trab. Estudantes: Mini-testes no gabinete (caso necessário) Época Especial: Exame para 20 valores

Bibliografia Computer Architecture: A Quantitative Approach, 3rd Ed. J. Hennessy & D. Patterson Morgan Kaufmann, ISBN 1-55860-724-2 May 2002 Computer Organization and Design, 3rd Ed. D. Patterson & J. Hennessy Morgan Kaufmann, ISBN 1-55860-604-1 August 2004 Apenas para revisão de aspectos básicos Serão fornecidos alguns artigos

Professores Paulo Marques Marco Vieira pmarques@dei.uc.pt Gabinete D2.5 / Laboratório E5.4 Horário de Atendimento: Seg. 11h-12h / Qui. 10h-12h Marco Vieira mvieira@dei.uc.pt Laboratório E6.2 Horário de Atendimento: Sex. 14h-18h

Revisão de alguns conceitos básicos

Processadores RISC RISC = Reduced Instruction Set Computer ISA (Instruction Set Architecture) simples e uniforme Arquitectura LOAD/STORE Todas as operações são sobre dados em registos Existem operações de LOAD/STORE com a memória Instruções uniformes e de tamanho igual Register file grande e de registos genéricos Comparação com CISC Operações complexas são difíceis de implementar em hardware Operações complexas tornam os sistemas lentos É difícil antever quais as operações que irão ser necessárias Registos com propósitos especiais O compilador pode eficientemente traduzir operações de alto nível

Instruções do MIPS Características Tipos de instruções Operações de cálculo (ALU) são sempre apenas entre registos Apenas existem duas instruções que mexem com memória (load/store) Todas as instruções têm o mesmo tamanho (32 bits) O número de formatos de instruções é reduzido (3) Tipos de instruções ALU (e.g. ADD R1,R2,R3 / ADDI R1,R2,5) Dois registos de origem e um de destino Um registo de origem, um valor imediato e um registo de destino LOAD/STORE (e.g. SD 8(R2),R1) Um registo base, um deslocamento e um registo de origem BRANCH/JUMP Dois registos a comparar e um valor imediato (offset) Um valor imediato (offset)

Instruções do MIPS (exemplos) LD R1,(8)R2 ADDI R1, 10 JR (R1) ADD R1,R2,R3 J 4000

Execução de uma instrução IF – Instruction Fetch Envia para a memória o endereço de PC e obtém a instrução corrente Incrementa o PC ID – Instruction Decode Descodifica a instrução Lê os registos [Calcula o possível end. de destino, num salto, e caso o seja, realiza-o] EXE – Execution / Address Calculation Instruções ALU: Realiza o cálculo Instruções LOAD/STORE: Calcula o endereço a utilizar MEM – Memory Access Instruções LOAD/STORE: Lê ou escreve na memória WB – Write Back Instruções ALU: Escreve o resultado no registo destino Instrução LOAD: Escreve o resultado no registo destino

MIPS Datapath (Implementação Multi-ciclo) Nota: Esta implementação não corresponde directamente às fases atrás mencionadas!

Implementação Multi-ciclo Cada instrução demora um número variado de ciclos de relógio No entanto, em cada momento, só existe uma instrução em execução CPI = Clocks per Instruction Tempo Execução = Instruções x CPImédio x Trelógio IF ID EXE MEM WB Saltos: 2 ciclos Store: 4 ciclos Outros: 5 ciclos

Máquina de Estados do MIPS (simplificada)

Como aumentar a performance? Iniciar uma instrução em cada ciclo de relógio! Adicionar registos entre os diversos “estados” do processador Speedup máximo = Número de fases do pipeline Throughput: Número de instruções completadas por unidade de tempo Aumenta  Latência: Tempo que cada instrução demora a executar Aumenta 

MIPS Datapath (Implementação Pipelined)

Pipeline ao longo do tempo...

Pipeline vs. Multi-ciclo

Aspectos importantes dos pipelines CPI >= Número de fases do pipeline O CPI não é igual ao número de fases do pipeline devido aos conflitos que surgem! A performance do pipeline está limitada pela fase mais comprida As diversas fases do pipeline têm de realizar aproximadamente o mesmo trabalho O tamanho de cada fase também está limitado pelo clock skew e latch overhead Se TClock  Clock_Skew + Latch_Overhead, então não vale a pena aumentar o número de fases do pipeline

Conflitos Estruturais De dados De controlo Um certo elemento do processador não pode ser utilizado por duas fases diferentes do pipeline ao mesmo tempo (e.g. memória: IF  Vai à memória buscar uma instrução; MEMAcede à memória; resolvido utilizando duas caches) Resolúveis duplicando o hardware ou com interlocks (bolhas) De dados Quando uma operação depende de resultados que ainda estão a ser calculados (ou carregados) De controlo Saltos (alteram o PC) Tudo isto leva à introdução de “bolhas” no pipeline!

Dependências de Dados

Forwarding

Há dependências de dados não resolúveis...

Dependências de Controlo (saltos) Problema dos saltos O salto é detectado no final do ID, no entanto já foi feito o fetch de uma nova instrução Abordagem simples (Predict Not Taken) Continua o fetch como se nada fosse Se a instrução da qual é feito o fetch é incorrecta, transforma-a num NOP (funciona porque só existem alterações reais nas fases MEM e WB; o salto é descoberto no fim de ID) Perca de performance demasiado elevada IF ID EXE MEM WB J IF ID EXE MEM WB IF -- -- -- -- IF ID EXE MEM WB IF ID EXE MEM WB IF ID EXE MEM WB Taken Not taken

Delay Slot e Nullifying Branch A instrução a seguir ao Branch é sempre executada O compilador tem de lá colocar uma instrução adequada ou um NOP No caso do “Nullifying Branch”, o compilador inclui na própria instrução o que ele previu que iria acontecer Não funciona para pipeline agressivos

Unidades funcionais não completamente pipelined Floating-point unit Pode considerar-se que a fase EXE pode demorar vários ciclos Ocorrem bolhas se existem conflitos estruturais ou dependências de dados (incluindo WAW!)

Excepções: O grande problema dos pipelines Dois tipos fundamentais de excepções: Verdadeiras EXCEPÇÕES (e.g. divisão por zero, overflow, page fault) Interrupções (de hardware ou traps) No caso das excepções é necessário a meio de uma instrução anulá-la, assim como todas as outras que estão a decorrer no pipeline e invocar o Sistema Operativo RESTARTABLE (e.g. Page Fault) vs. TERMINATE (e.g. Illegal Instruction) Grande problema: Processadores “out-of-order” e unidades não fully-pipelined (e.g. FP unit)

Material para ler Computer Architecture: A Quantitative Approach Appendix A A1, A2, A3, A4 (menor profundidade) A5 (menor profundidade)

Algumas questões de revisão... Porque é que o registo R0 do MIPS é sempre 0? Porque é que a maioria dos processadores RISC tem caches de instruções e de dados separadas? Sendo possível colocar tantos transístores dentro de um integrado, porque é que não se aumenta muito mais o número de registos dos processadores (e.g. 128)? Sendo possível colocar tantos transístores dentro de um integrado, porque é que não se aumenta muito mais o número de unidades funcionais existentes? Se o throughput do processador (e velocidade de relógio) tende a aumentar com o tamanho do pipeline, porque é que não se aumenta muito mais o número de fases dos mesmos? Como é que é possível haver funções recursivas se a instrução JAL (Jump-And-Link) guarda sempre o endereço de retorno no registo R31 (i.e. $RA)? Porque é que é necessário haver uma instrução especial RFE (Return-from-exception)?