ARQUITECTURA DE COMPUTADORES



Documentos relacionados
Organização e Arquitetura de Computadores I

Arquitetura de Computadores. Ivan Saraiva Silva

Arquitecturas Alternativas. Pipelining Super-escalar VLIW IA-64

Introdução ao Processamento Paralelo

Organização e Arquitetura de Computadores I

Arquitetura de Computadores I

Pipelining - analogia

Visão Geral de Pipelining

Arquitetura de Computadores I

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Pipeline. Todos os estágios devem estar prontos ao mesmo tempo para prosseguir.

Informática I. Aula 5. Aula 5-13/05/2006 1

Organização e Arquitetura de Computadores I

Conflitos. Aula de Março de

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática IM-NCE/UFRJ. Pipeline. Gabriel P. Silva. Microarquitetura de Alto Desempenho

ARQUITETURA DE COMPUTADORES

Implementação de pipelines

Sistemas Processadores e Periféricos Aula 5 - Revisão

Introdução à Organização de Computadores. Execução de Programas Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

Introdução à Organização de Computadores. Sistemas da Computação Prof. Rossano Pablo Pinto, Msc. rossano at gmail com 2 semestre 2007

ARQUITETURA DE COMPUTADORES

Exemplo: CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 ADD $s0, $t0, $t1 IF ID EX MEM WB SUB $t2, $s0, $t3 IF Stall Stall ID EX MEM WB

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Capítulo 3 Processadores de Propósito Geral: Software

BARRAMENTO DO SISTEMA

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

RISC simples. Aula de Março de

Introdução à Arquitetura de Computadores

Caminho dos Dados e Atrasos

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

Primeiros "computadores" digitais. Execução de um programa. Consolas. Primórdios dos computadores. Memória interna. Computadores com memória interna

Arquitetura de Computadores RISC x CISC. Gustavo Pinto Vilar

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Componentes do Computador e. aula 3. Profa. Débora Matos

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Um Caminho de Dados Pipeline Para a ISA MIPS: Aprendendo na Prática

Arquiteturas RISC. (Reduced Instructions Set Computers)

Pipeline. Prof. Leonardo Barreto Campos 1

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Sistemas Computacionais II Professor Frederico Sauer

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Arquitetura de processadores: RISC e CISC

28/9/2010. Unidade de Controle Funcionamento e Implementação

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS

Paralelismo a Nível de Instrução

Paralelismo. Computadores de alto-desempenho são utilizados em diversas áreas:

Arquitetura de Computadores. Tipos de Instruções

Arquitetura de Computadores - Processadores Superescalares. por Helcio Wagner da Silva

MICROPROCESSADORES Nuno Cavaco Gomes Horta Universidade Técnica de Lisboa / Instituto Superior Técnico

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Introdução. Os mesmos princípios se aplicam a processadores. No MIPS as instruções são divididas normalmente em cinco etapas:

Exercícios resolvidos (aula de 4 de Maio) Resolução:

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Evolução dos Processadores

Conjunto de instruções. O Conjunto de Instruções. Conjunto de instruções. Instruções típicas. Instruções típicas. Instruções típicas

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 8

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

Organização e Arquitetura de Computadores. Capítulo 13 Paralelismo no nível de instruções

Sequenciamento dinâmico

28/9/2010. Paralelismo no nível de instruções Processadores superescalares

Edeyson Andrade Gomes

Modos de entrada/saída

Organização e Arquitetura de Computadores I. de Computadores

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Computadores de Programação (MAB353)

Arquitectura de Computadores II

Arquitectura de Computadores RECUPERAÇÃO DO 1º TESTE

Processadores BIP. Conforme Morandi et al (2006), durante o desenvolvimento do BIP, foram definidas três diretrizes de projeto:

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Figura 1 - O computador

Sistemas Operacionais

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Componentes de um Computador: Modelo Von Neumann

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

ULA Sinais de Controle enviados pela UC

Nível da Microarquitetura

Organização e Arquitetura de Computadores. Hugo Barros @hugobarros.com.br

GUIA DE FUNCIONAMENTO DA UNIDADE CURRICULAR

1 O que é um computador? Definição uma máquina que lê dados, efectua cálculos e fornece resultados.

Capítulo 3. Avaliação de Desempenho. 3.1 Definição de Desempenho

Introdução aos Computadores

5. EXPERIÊNCIAS E ANÁLISE DOS RESULTADOS Os Programas de Avaliação

Dadas a base e a altura de um triangulo, determinar sua área.

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Previsão do Desempenho. AC1 13ª aula Previsão do Desempenho 1

Sistemas Operacionais

Aula 14: Instruções e Seus Tipos

SSC510 Arquitetura de Computadores. 2ª aula

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Organização e Arquitetura de Computadores I

Conjunto de Instruções e Arquitectura p.1

3. Arquitetura Básica do Computador

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples

Transcrição:

ARQUITECTURA DE COMPUTADORES CAPÍTULO IV AULA II Maio 2014

Índice Processadores Revisões Pipelining Pipeline hazards Hazard estrutural Hazard de dados Hazard de controlo Pipelining datapath Pipelined control Caso Real

Overview Esquema completo de um processador. 1 MUX: 1- Decide se a próxima instrução é a seguinte ou se existe um branch que força o salto para PC + 4. 2 3 2- Decide se guarda num registo o resultado de uma operação aritmética proveniente da ALU ou um valor carregado de memória por um load. 3- Decide se o segundo input da ALU é um operando aritmético ou o offset de uma instrução de load ou store.

Overview A figura anterior mostra-nos diferentes componentes de diferentes naturezas, tais como: Elementos combinacionais elementos que para cada conjunto de entrada determinam sempre o mesmo valor de saída. Ex: ALU. Elementos de estado elementos que mantêm determinado estado guardado num elemento de memória interno. Ex: instruções, registos, memórias. Por norma os elementos de estado recebem dois parâmetros: Conteúdo a escrever. Relógio que determina o momento de escrita. Retornam o último valor escrito.

Pipelining Uma técnica de implementação na qual múltiplas instruções são executadas pelo processador em simultâneo, optimizando assim os recursos deste.

Pipelining Considerando o exemplo do processo de tratamento de roupa suja: Sem pipelining: 1. Colocar a roupa na máquina de lavar e esperar que lave; 2. Tirar a roupa da máquina de lavar e colocar na máquina de sacar. Esperar que seque. 3. Tirar a roupa da máquina de secar e passar a ferro. 4. Arrumar a roupa. 5. Colocar a próxima roupa suja na máquina de lavar

Pipelining Considerando o exemplo do processo de tratamento de roupa suja: Com pipelining: 1. Colocar a roupa na máquina de lavar e esperar que lave; 2. Tirar a roupa da máquina de lavar, colocar na máquina de sacar e carregar a segunda remessa na máquina de lavar. 3. Tirar a roupa da máquina de secar e passar a ferro. Tirar a segunda remessa da máquina de lavar e colocar na de secar. Colocar a terceira remessa na máquina de lavar. 4. Arrumar a primeira roupa e passar a segunda a ferro 5. Etc

Pipelining

Pipelining Utilizando pipelining o tempo de cada tarefa não é reduzido. No entanto, no mesmo período de tempo consegue-se executar mais do que uma tarefa em sistemas distintos. Portanto, optimizando os recursos diminui-se o tempo geral de execução, aumentando por isso o throughput. Entenda-se por throughput a capacidade em executar instruções/unidade de tempo.

Pipelining Este mesmo principio aplica-se ao modelo sequencial, anteriormente estudado, implementado na arquitectura MIPS da seguinte forma: Ler instrução (Fetch PC) Descodificar e Ler inputs Executar um cálculo ou obter um endereço Aceder a um operando em memória Escrever ouputs

Concretizando: Pipelining

Pipelining Considerando condições ideais e instruções com a mesma dimensão, podemos concluir que: Tempo entre instruções piped = Tempo entre instruções (not piped) nºde etapas Assim, considerando a figura do slide anterior e supondo que as instruções ocupariam o mesmo tempo de CPU, teríamos: Tempo entre instruções piped = 800 5 = +- 160 ps

Pipelining Pipelining em MIPS A arquitectura MIPS foi precisamente desenhada para suportar pipelining, tendo nomeadamente: Todas as instruções com a mesma dimensão (32 bits) Efectuar o fetch e a descodificação é mais simples caso se utilize sempre o mesmo tamanho. No x86 onde as instruções variam entre 1 e 15 byte, torna-se mais complexo a implementação de pipelining. Nos x86 modernos encapsulam-se as instruções em segmentos com dimensão igual, convergindo para a arquitectura MIPS. Apenas 3 formatos de codificação, com os registos fonte sempre na mesma posição Deste modo é possível ler os inputs enquanto se determina qual o tipo de operação.

Pipelining Pipelining em MIPS A arquitectura MIPS foi precisamente desenhada para suportar pipelining, tendo nomeadamente (continuação): Os operadores de memória somente surgem nos loads e stores Deste modo podemos utilizar a etapa de execução para determinar o endereço e a próxima etap para obter os dados Os operandos devem estar alinhados em memória. É possível transferir dados entre o processador e a memória numa única etapa.

Pipeline Hazards Existem situações onde a próxima etapa não pode ser executada durante o mesmo ciclo que a etapa anterior. A estas situações chama-se Pipeline Hazards (perigos de pipelining), existindo três tipos distintos, nomeadamente: Hazard estrutural Hazard de dados Hazard de controlo

Pipeline Hazards Hazard estrutural Ocorre quando não é possível executar duas instruções distintas, no mesmo ciclo de relógio. Ex: considerando o exemplo do tratamento de roupa suja, caso as máquinas de lavar e secar fossem um só aparelho não seria possível executar ambas as tarefas no mesmo ciclo. Ou seja, quando uma instrução não é executada no ciclo devido, porque o processador não tem capacidade para executar todas as instruções planeadas nesse mesmo ciclo de relógio.

Pipeline Hazards Hazard de dados Ocorre quando uma instrução que deveria correr num determinado ciclo, não pode ser executada, porque necessita de dados de instruções que ainda não terminaram. Ex: add $s0,$t1,$t2 sub $s1,$s0,$t3 No exemplo, o registo $s0 somente ficará disponível na quinta etapa (escrita dos outputs). Como tal, a instrução sub somente poderá ser executada 3 ciclos mais tarde, evitando assim Hazard de dados. De modo a evitar esse tempo de espera surgiu uma técnica no desenho do hardware chamada Forwarding ou Bypassing.

Pipeline Hazards Hazard de dados Forwarding ou Bypassing é uma técnica que permite obter os resultados de uma execução directamente da ALU, sem ter de esperar que os mesmos sejam colocados num registo.

Pipeline Hazards Hazard de dados Apesar da técnica Forwarding ou Bypassing funcionar plenamente no exemplo anterior, caso a instrução precedente seja um load, os dados só ficaram disponíveis na quarta etapa, forçando o adiamento da próxima instrução. A estes casos chama-se Hazard de dados com uso de carga. Para resolver esta questão utiliza-se o que se chama de pipelining stall ou bublles, ou seja, uma instrução fictícia que permite adiar a próxima instrução dentro do mesmo ciclo.

Pipeline Hazards Hazard de dados Pipelining stall

Pipeline Hazards Hazard de dados Exercício: Ordene as seguintes instrução de modo a evitar qualquer hazard de dados. lw $t1, 0($t0) lw $t2, 4($t0) add $t3, $t1,$t2 sw $t3, 12($t0) lw $t4, 8($t0) add $t5, $t1,$t4 sw $t5, 16($t0)

Pipeline Hazards Hazard de controlo ou de branch Ocorre com a próxima instrução carregada no Program Counter não é a instrução que deveria ser executada. Este problema surge no âmbito das instruções branches. Ao se verificar um branche a próxima instrução é alterada, alterando assim a ordem previamente prevista pelo pipelining. Uma solução não optimizada é a introdução de uma cadeia intermédia tal como no caso anterior

Pipeline Hazards Hazard de controlo ou de branch Uma solução não optimizada é a introdução de uma cadeia intermédia tal como no caso anterior. No entanto, dada a complexidade e pouco eficiência, foi necessário desenhar uma solução mais eficaz.

Pipeline Hazards Hazard de controlo ou de branch Performance via previsões Ao prever o resultado do branch, não será necessário desacelerar o pipeline, optimizando assim a execução do mesmo. No entanto, caso a previsão falhe, é necessário refazer o branch e seguir o outro caminho. Uma forma simples de implementar uma previsão em branches é assumir que os branches nunca irão ser verdadeiros.

Pipeline Hazards Hazard de controlo ou de branch Performance via previsões

Pipeline Hazards Hazard de controlo ou de branch Performance via previsões Numa versão mais realista, uns branches são assumidos como verdadeiros e outros como falsos. Ex: Branches em loops que provocam o regresso a instruções anteriores, são normalmente tomados como verdadeiros. Assim, algumas implementações, por regra, determinam que sempre que o endereço do branche é anterior ao do próprio branch, este é tomado como verdadeiro. Outras soluções mais eficazes, gerem as decisões dinamicamente com base no histórico de cada branche.

Pipelining - Resumo O Pipelining é uma técnica que explora o paralelismo entre instruções, tendo a vantagem de que ao contrário dos multiprocessadores, é completamente transparente para o programador. O Pipelining aumenta o número de instruções executadas em simultâneo e a frequência a que as mesmas são inicializadas e concluídas. Ao contrário, o pipelining não diminuí o tempo que demora a executar uma instrução individualmente (também chamado de latencia).

Pipelining Datapath De modo a entender a forma como o processador implementa o pipelining, a seguinte figura divide o datapath nas 5 etapas definidas pelo MIPS:

Pipelining Datapath Como podemos observar, o fluxo de dados é sempre feito da esquerda para a direita, exceto duas exceções: 1. Na escrita de um valor para um registo 2. Na escolha do próximo PC com base na incrementação ou no resultado de um branch. O primeiro caso pode originar um hazard de dados, enquanto que o segundo caso pode originar um hazard de controlo.

Exemplificando: Pipelining Datapath

Pipelining Datapath A versão do datapath pipelinined, estabelece quatro registos entre cada etapa. A esses registos atribui-se o nome composto pelas partes adjacentes, ex: IF/ID (Intruction Fetch /Instruction Decode), ID/EX, EX/MEM e MEM/WB.

Exemplificando um lw (lado direito a azul significa leitura, enquanto que o lado esquerdo significa escrita): 1. Pipelining Datapath

Exemplificando um lw (lado direito a azul significa leitura, enquanto que o lado esquerdo significa escrita): 2. Pipelining Datapath

Exemplificando um lw (lado direito a azul significa leitura, enquanto que o lado esquerdo significa escrita): 3. Pipelining Datapath

Exemplificando um lw (lado direito a azul significa leitura, enquanto que o lado esquerdo significa escrita): 4. Pipelining Datapath

Exemplificando um lw (lado direito a azul significa leitura, enquanto que o lado esquerdo significa escrita): 5. Pipelining Datapath

Pipelining Datapath Exemplificando um lw (lado direito a azul significa leitura, enquanto que o lado esquerdo significa escrita):

Pipelined Control Tal como aplicado para o datapath, torna-se necessário adaptar o controlador ao esquema de pipelining. Como tal, considere-se o seguinte esquema:

Pipelined Control Dividindo o esquema anterior nas mesmas 5 etapas conclui-se que: 1. Ler instrução Não são necessários elementos de controlo, uma vez que a leitura da instrução e escrita do PC é uma ação que é sempre executada. 2. Descodificar e ler inputs Tal como no caso anterior também aqui não existe a necessidade de elementos de controlo.

Pipelined Control 3. Executar - Os sinais a serem lidos são RegDst, ALUOp e ALUSrc, selecionando o registo para o resultado, a operação da ALU e se lê um segundo registo ou uma extensão (em bits) de um valor imediato.

Pipelined Control 4. Acesso à memória As linhas de controlo nesta etapa são Branch, MemRead e MemWrite, acionadas respetivamente pelas instruções branch, load e store. 5. Write-Back Contem duas linhas de controlo, nomeadamente a MemtoReg que determina se o valor escrito no registo provem da ALU ou da memória, e a RegWrite que escreve os valor escolhido.

Pipelined Control Exemplo das flags de controlador:

Pipelined Control Aplicando a linhas de controlo aos registos de pipelining:

Pipelined Control Combinando com o esquema do datapath, ficamos com o seguinte esquema:

Caso Real Considere a seguinte sequência de instruções: Como resolver este problema?

Caso Real Utilizando o registo de pipelining EX/MEM é possível passar o valor de $2 diretamente da saída da ALU para a entrada da mesma na instrução seguinte, sem passar pelos registos. Deste modo resolve-se o problema de hazard de dados utilizando o método de forwarding.

Dúvidas e Questões Maio 2014