A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

0. Introdução.

Apresentações semelhantes


Apresentação em tema: "0. Introdução."— Transcrição da apresentação:

1 0. Introdução

2 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

3 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

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

5 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 Laboratório E6.2 Horário de Atendimento: Sex. 14h-18h

6 Revisão de alguns conceitos básicos

7 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

8 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)

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

10 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

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

12 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

13 Máquina de Estados do MIPS (simplificada)

14 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 

15 MIPS Datapath (Implementação Pipelined)

16 Pipeline ao longo do tempo...

17 Pipeline vs. Multi-ciclo

18 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

19 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!

20 Dependências de Dados

21 Forwarding

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

23 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

24 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

25 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!)

26 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)

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

28 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)?


Carregar ppt "0. Introdução."

Apresentações semelhantes


Anúncios Google