Execução concorrente de instruções: Pipelines

Tamanho: px
Começar a partir da página:

Download "Execução concorrente de instruções: Pipelines"

Transcrição

1 Execução concorrente de instruções: Pipelines João Canas Ferreira Novembro de 2006 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3ª. ed., MKP 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 1/40 Assuntos 1 Execução concorrente de instruções Conceito e finalidade Dependências entre instruções 2 Fundamentos da operação de pipelines O que são pipelines Pipeline de 5 andares 3 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 4 Tratamento de instruções complexas 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 2/40

2 Execução concorrente de instruções Conceito e finalidade O modelo sequencial de computação No modelo sequencial de computação, a execução de um programa processa-se do seguinte modo: 1. O CPU obtém uma instrução de memória. 2. A operação é efectuada. 3. É determinado o endereço da próxima instrução. Repetir a partir de 1. Os efeitos observáveis da execução incluem a alteração de registos ou posições de memória, a alteração de flags, geração de excepções, etc. Numa implementação que corresponda directamente ao modelo apenas se pode aumentar o desempenho tornando a execução da operação mais rápida. Para ultrapassar esse limite é preciso executar instruções parcial ou totalmente em simultâneo AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 3/ O modelo sequencial permite atribuir de uma forma simples um significado operacional a um programa. Tem a grande vantagem e ser relativamente próximo de uma possível implementação em hardware (com a unidade de controlo implementada por uma máquina de estados) e do modelo formal de máquina de Turing. Tem a desvantagem de impor uma ordem na execução de instruções cuja necessidade não decorre logicamente do algoritmo a implementar No passo 3, a determinação da próxima instrução a executar é feita geralmente de forma implícita: trata-se da instrução que reside na posição a seguir à da instrução executada antes. Apenas as instruções de controlo de fluxo indicam explicitamente a origem da próxima instrução (o alvo do salto) São concebíveis conjuntos de instruções em que cada instrução especifique o endereço da seguinte (i.e., cada instrução é uma instrução de controlo de fluxo). Muitos esquemas de microcódigo usam uma arquitectura desse tipo. 3

3 Execução concorrente de instruções Conceito e finalidade Execução concorrente Concorrência parcial: A execução de uma instrução é dividida em fases. Num mesmo instante, diferentes instruções podem estar em diferentes fases da sua execução. Problema: Dado um programa, identificar que instruções podem ser executadas concorrentemente, sem alterar os efeitos do programa. Efeitos do programa: Sequência de alterações visíveis do estado da memória e do processador. Existem muitas técnicas para detectar e aproveitar o paralelismo entre instruções (i.e. a capacidade de executar instruções concorrentemente). Essa técnicas caem em duas categorias gerais: 1. técnicas dinâmicas o processador detecta o paralelismo durante a execução do programa (Pentium III e 4, PowerPC G4); 2. técnicas estáticas o paralelismo é detectado antes da execução pelo compilador (IA-64, sistemas embutidos). Não se trata de uma divisão estanque; algumas técnicas podem ser adoptadas nos dois domínios AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 4/ As técnicas estáticas obrigam à recompilação dos programas para cada modelo diferente do compilador, mesmo que o conjunto de instrução não mude. Quando a compatibilidade binária é importante, apenas as técnicas dinâmicas pode ser usadas. Excepção: Pode ser possível produzir um tradutor binário que converte um programa em binário de um modelo para o outro, refazendo as optimizações necessárias. Consultar, por exemplo, ou http: // A utilização de técnicas dinâmicas não exclui o emprego das outras. Considere-se o caso dos processadores da Intel que implementam a arquitectura IA-32. A compatibilidade binária entre modelos é garantida, mas a recompilação de um programa pode permitir a geração de código mais eficiente para um modelo particular (mas igualmente correcto para qualquer modelo). 4

4 Execução concorrente de instruções Conceito e finalidade Aspectos básicos O quantidade de paralelismo existente num bloco básico é reduzida: Blocos básicos têm tipicamente entre 5 e 7 instruções em média (MIPS). Paralelismo simples de identificar: loop-level parallelism Paralelismo entre iterações de um ciclo. for (i=1; i <= 1000; i=i+1) x[i] = x[i] + y[i]; Todas as iterações do ciclo podem ser executadas concorrentemente. Cada iteração apresenta reduzido paralelismo. Duas questões importantes: Que propriedades dos programas e dos processadores limitam a quantidade de paralelismo que pode ser aproveitado? O mapeamento da estrutura do programa na estrutura do processador é crítico AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 5/ Definição de bloco básico: bloco sequencial de instruções sem saltos no seu interior e com apenas um ponto de entrada e um ponto de saída Para ser efectivo, o aproveitamento da concorrência entre instruções deve ultrapassar o âmbito do bloco básico. Por outras palavras, a identificação de instruções que podem ser total ou parcialmente executadas simultaneamente não deve ser limitada pelos saltos condicionais (nem incondicionais) Para identificar instruções potencialmente concorrentes é preciso determinar as relações lógicas entre todas as instruções. A relação lógica de precedência entre instruções deve ser sempre preservada para garantir a execução correcta dos programas A forma como a execução de instruções é organizada internamente tem um grande impacto sobre a eficiência global. Inversamente, a forma como o programa é adaptado à organização pode aumentar ou diminuir drasticamente a capacidade do hardware para detectar instruções potencialmente concorrentes, e, consequentemente, pode ter uma grande influência sobre o desempenho. 5

5 Execução concorrente de instruções Dependências entre instruções O conceito de dependência entre instruções Duas instruções independentes podem ser executadas em simultâneo sem conflitos, desde que existam recursos suficientes. Quando existe uma relação de dependência entre duas instruções, estes devem ser executadas em série (talvez com sobreposição parcial). dependências de dados: dependências verdadeiras e dependências de nomes. dependências de controlo Um conflito ocorre sempre que existe uma dependência entre instruções suficientemente próximas para que a sobreposição ou re-ordenação modifique a ordem de acesso ao operando envolvido na dependência. A satisfação das dependências garante a manutenção da ordem do programa, i.e., garante que as alterações de estado (observáveis) são as especificadas pelo modelo sequencial de execução AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 6/ O conceito de dependência pretende expressar formalmente a relação de precedência entre duas instruções Instruções dependentes não podem executar de forma totalmente concorrente com as instruções de que dependem. Isto não implica que uma execução parcialmente concorrente seja impossível, como no caso de pipelines Um conflito ocorre sempre que a execução (parcialmente) concorrente de instruções leva à violação de uma dependência. Se um conflito ocorre ou não (para uma dada dependência) depende da organização interna do CPU. De um modo geral, pretende-se minimizar a ocorrência de conflitos Um conflito pode ser sempre evitado se a execução de instruções retomar o modo de funcionamento completamente sequencial. Ou seja, quando ocorre um conflito é sempre possível resolvê-lo atrasando a execução das instruções dependentes. Assim garante-se para cada instrução que aquelas de que depende já foram certamente executadas. 6

6 Execução concorrente de instruções Dependências entre instruções Dependências de dados A instrução j depende da instrução i (j is data-dependent on i) se ocorrer uma das duas situações seguintes: 1. a instrução i produz um resultado que pode ser usado pela instrução j; 2. a instrução j depende da instrução k, que, por sua vez, depende da instrução i. A cadeia de dependências pode englobar o programa completo. Exemplo com 3 dependências: Loop:L.D F0, 0(R1) ; F0 <== elemento do vector DADD F4, F0, F2 ; somar escalar em F2 S.D F4, 0(R1) ; guardar o resultado DADDUI R1, R1, #-8 ; decr. apontador 8 bytes BNE R1, R2, Loop ; saltar se R1!= R AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 7/ Num processador com capacidade para executar concorrentemente várias instruções é geralmente necessário detectar um conflito para o evitar. A detecção é feita por um circuito designado por pipeline interlock Alguns processadores não têm circuitos detectores de conflitos. Nesse caso, é o compilador que fica encarregado de gerar código sem conflitos, se necessário introduzindo instruções nop (no operation) no programa. A programação manual em assembly é naturalmente mais complicada nestes casos. 7

7 Execução concorrente de instruções Dependências entre instruções Características das dependências de dados A presença de uma dependência de dados numa sequência de instruções reflecte uma dependência no programa original: dependências são propriedades dos programas. O facto de uma dependência resultar na detecção de um conflito e/ou de causar um protelamento são propriedades da organização da pipeline. Uma dependência: 1. indica a possibilidade de existência de um conflito; 2. determina a ordem de cálculo; 3. estabelece um limite superior para a quantidade de paralelismo que pode ser aproveitado. Fluxo de dados: (i) por registos [e flags]; (ii) por memória. Soluções: 1. manter a dependência, mas evitar o conflito; 2. eliminar a dependência por transformação do código AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 8/ Dependências causadas por transferências de informação via memória podem ser difíceis de detectar. Por exemplo, as instruções LD R1, 100(R4) e LD R1, 64(R6) podem designar a mesma posição de memória (por exemplo, se R4=0 e R6=36). Neste caso, diz-se que os endereços efectivos são iguais O endereço efectivo de memória usapo por uma instrução load/store também pode variar durante a execução do programa: basta que o conteúdo do registo associado mude. Portanto, para efeitos de detecção de conflitos, não basta analisar os códigos das instruções, é necessário ter em conta também o estado dos registos Quando não é possível garantir a ausência de conflitos, é necessário assumir que eles podem existir, caso contrário, não seria possível garantir a execução correcta do programa. 8

8 Execução concorrente de instruções Dependências entre instruções Dependências de nome Uma dependência de nome ocorre quando duas instruções usam o mesmo registo ou posição de memória (um «nome»), mas sem que haja um fluxo de dados associado com esse nome. Existem dois tipos de dependências de nome envolvendo uma instrução i que precede a instrução j num programa: Uma antidependência entre i e j ocorre quando a instrução j escreve num registo ou posição de memória lido pela instrução i. Uma dependência de saída ocorre quando ambas as instruções escrevem no mesmo registo ou posição de memória. A ordem das instruções deve ser preservada para garantir que o valor final corresponde a j. Como não se trata de verdadeiras dependências, as instruções i e j podem ser executadas simultaneamente (ou por ordem diferente) desde que o «nome» usado seja mudado. Esta operação é mais fácil de executar (pelo compilador ou processador) para registos: register renaming AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 9/ Dependências de nome ocorrem, por exemplo, quando um registo (associado a uma variável) é reutilizado para guardar o valor de outra variável Em geral, dependências de nome envolvendo registos podem ser evitadas se existirem registos temporários que permitam guardar todos os valores. Todas as instruções que referem o «nome» original devem ser modificadas dinamicamente para usarem os dados dos registos temporários apropriados. 9

9 Execução concorrente de instruções Dependências entre instruções Conflitos de dados Conflitos de dados possíveis entre duas instruções i e j (que ocorrem no programa por esta ordem): RAW (read after write) j tenta ler uma fonte antes que i aí coloque um valor. Corresponde a uma verdadeira dependência de dados. WAW (write after write) j tenta escrever num local antes de i. Corresponde a uma dependência de saída. Ocorre em pipelines que efectuam escritas em mais que um andar ou que permitem que instruções continuem mesmo quando uma instrução anterior é protelada. WAR (write after read) j tenta escrever num local antes de este ser lido por i. Corresponde a uma antidependência. (Não ocorre na maioria das pipelines com emissão por ordem de instruções.) RAR (read after read) não constitui um conflito AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 10/ O nome dos conflitos é dado de acordo com a ordem do programa que deve ser preservada Conflitos do tipo WAR tendem a surgir apenas em processadores que emitem instruções fora de ordem (emitir uma instrução = iniciar a sua execução) ou que suportam conjuntos heterogéneos de instruções em que algumas instruções alteram dados no início da execução e outras lêem dados nas fases finais da execução. Muitos processadores nunca podem ter conflitos deste tipo Conflitos do tipo WAW também não correm nas organizações concorrentes mais simples. Por exemplo, a pipeline básica analisada mais à frente não tem destes conflitos. 10

10 Execução concorrente de instruções Dependências de controlo Dependências entre instruções Uma dependência de controlo determina a ordem de uma instrução i face a uma instrução de salto condicional. Todas as instruções de um programa, excepto as do primeiro bloco básico, dependem de algum conjunto de saltos condicionais. Dependências de controlo impõem duas restrições: Uma instrução dependente de um salto não pode ser colocada antes do salto, porque já não seria controlada pelo instrução de salto condicional. Uma instrução que não está dependente de um salto não pode ser movida para depois de um salto, porque passaria a ser controlada por esse salto. No caso mais simples, dependências de controlo são preservadas porque 1. as instruções são executadas pela ordem em que surgem no programa; 2. o controlo de conflitos garante que uma instrução não é executada antes de se conhecer o destino do salto. Respeitar as dependências de controlo não é um fim em si; o que se quer garantir é o fluxo de dados e o comportamento face a excepções AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 11/ Exemplo de uma dependência de controlo simples: if cond1 {instr1;} if cond2 {instr2;} A instrução instr1 apresenta uma dependência de controlo em relação a cond1 e instr2 tem uma dependência de controlo de cond2, mas não de cond1. 11

11 Execução concorrente de instruções Dependências entre instruções Comportamento correcto na presença de excepções Comportamento correcto na presença de excepções significa que qualquer alteração da ordem de execução das instruções não modifica a sequência em que as excepção são levantadas no programa. Frequentemente usa-se uma condição mais relaxada: a nova ordem não deve causar a ocorrência de novas excepções no programa. DADDU R2, R3, R4 BEQZ R2, L1 ; saltar para L1 se R2=0 LW R1, 0( R2 )... L1:... Existe uma dependência de dados envolvendo R2. É possível trocar as duas últimas instruções? Não existe nenhuma de dependência de dados entre elas. Mas a instrução LW pode causar uma excepção no acesso a memória. Uma técnica designada por especulação permite ultrapassar este problema AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 12/ A dependência de dados envolvendo R2 impõe que a primeira instrução seja executada em primeiro lugar, mas não impõe uma ordem relativa entre as outras duas; essa ordem é imposta pela dependência de controlo de LW em relação a BEQZ. Não existe uma dependência de dados entre estas duas instruções Como é que a instrução LW pode causar uma excepção? Por exemplo, acedendo a uma zona de memória que não pertença ao seu processo. Assim, poderia ocorrer uma excepção que não surgiria se a ordem das instruções não fosse alterada As técnicas de especulação devem ser capazes de anular o lançamento da excepção caso o salto condicional seja efectivamente tomado Para que a troca de posição das instruções seja válida é preciso que R1 não seja usado no código a seguir a R1 (ou, mais precisamente, que exista uma escrita em R1 antes de qualquer leitura desse registo). 12

12 Execução concorrente de instruções Preservação do fluxo de dados Dependências entre instruções Fluxo de dados: fluxo de valores entre as instruções que os produzem e as que os consomem. As instruções de salto condicional fazem com que o fluxo seja dinâmico, i.e., o valor de um dado registo/posição de memória pode provir de diferentes origens. DADDU BEQZ DSUBU L:... OR R1, R2, R3 R4, L R1, R5, R6 R7, R1, R8 DSUBU não pode ser colocada antes do salto por alterar o fluxo de dados de OR. O valor de R1 depende do salto BEQZ. Por vezes, é possível determinar que o desrespeito de uma dependência de controlo não afecta o fluxo ou a geração de excepções. Esta tarefa é geralmente efectuada pelos compiladores AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 13/ Exemplo de uma situação em que uma dependência de controlo pode ser desrespeitada: skipnext: DADDU R1, R2, R3 BEQZ R12, skipnext DSUBU R4, R5, R6 ; pode ser "adiantada" DADDU R5, R4, R9 OR R7, R8, R9 ; R4 não é usado mais Suponhamos que o registo R4 não era usado no bloco de código colocado após a etiqueta skipnext. Então passar a instrução DSUBU para antes do salto não alteraria os efeitos do programa (o item de dados em R4 está morto ) Determinar se os dados guardados num registo estão vivos (vão ser ainda usados) ou mortos (não são mais usados) é uma das tarefas que geralmente incumbe ao compilador (para saber quando pode reutilizar registos). 13

13 Pipelines Fundamentos da operação de pipelines O que são pipelines Pipelining é uma técnica de implementação em que a execução de múltiplas instruções é feita concorrentemente. Analogia: Linha de montagem. A B C D andar 1 andar 2 andar 3 andar 4 Cada andar trabalha concorrentemente com os outros, embora sobre uma parte diferente da instrução. ciclo inst 1 A B C D inst 2 A B C D inst 3 A B C D inst 4 A B C inst 5 A B inst 6 A débito: nº de instruções que são completadas (i.e. abandonam a pipeline) por unidade de tempo. ciclo do processador: tempo necessário para mover a instrução através de 1 andar. O ciclo do processador é determinado pelo andar mais lento. Ideal: Equilibrar o tempo de todos os andares AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 14/ Em cada instante podem estar até 4 instruções em execução (neste exemplo); em cada ciclo (a partir do 4) é terminada uma instrução Como os andares estão interligados, é necessário que todos estejam prontos ao mesmo tempo: esse tempo constitui o período do ciclo de relógio do processador Porque os andares devem prosseguir todos ao mesmo tempo, a duração do ciclo é determinado pelo tempo necessário para que o andar mais lento execute a sua tarefa Se o tempo de processamento de todos os andares for idêntico, então o tempo médio por operação é (em condições ideais) tempo por instrução do CPU sem pipeline número de andares Pipelining é tipicamente invisível para o programador (em CPUS com interlocks). 14

14 Fundamentos da operação de pipelines Pipeline de 5 andares Um conjunto de instruções RISC básico Para efeitos de análise das questões que surgem em pipelines, usaremos um subconjunto do MIPS64 (ver tb. a página WWW da disciplina). Todas as operações sobre dados aplicam-se a registos de 64 bits e modificam todo o registo; Apenas instruções load/store afectam a memória; podem operar sobre parte de um registo (por exemplo, afectando 32 bits de 64); As instruções têm todas o mesmo comprimento e os formatos diferentes são poucos. Instruções da ALU: Tomam dois registos, ou um registo e um valor imediato de 16 bits, como operandos e guardam o resultado num terceiro registo. Instruções load/store: Tomam um registo (a base) e um deslocamento (de 16 bits) como operandos. Um segundo registo é o destino/origem da transferência. Saltos condicionais e incondicionais: Os saltos condicionais baseiam-se no resultado da comparação entre dois registos AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 15/ As instruções indicadas constituem um subconjunto de MIPS64. Esta arquitectura de conjunto de instruções será analisada com mais pormenor num trabalho prático Os saltos condicionais são relativos e têm um deslocamento de 16 bits (são interpretados como números com sinal) Todas as instruções têm todas o mesmo tamanho: 32 bits. 15

15 Fundamentos da operação de pipelines Pipeline de 5 andares Implementação multi-ciclo sem pipelining 1. IF (instruction fetch): Usa o endereço contido no contador de programa (PC) para ir buscar a instrução actual a memória. Actualiza PC: PC PC ID (instruction decode/register fetch): Descodifica a instrução e lê os registos fonte. Compara registos. Efectua extensão do deslocamento. Calcula endereço de destino e actualiza PC (se saltar). 3. EX (execution/effective address): Uma de 3 operações: (i) calcula endereço efectivo para acesso a memória; (ii) a ALU executa a operação sobre os registos; (iii) a ALU executa operação sobre registo e valor imediato. 4. MEM (memory access): Para instruções load/store: transferir dados. 5. WB (write-back): Instrução de ALU ou load: guardar dados em registo. Saltos: 2 ciclos, store: 4 ciclos, outras: 5 ciclos. Globalmente, CPI=4.54 se assumirmos frequências de 12%, 10%, e 78%, respectivamente AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 16/ Este esquema apresenta uma divisão possível das etapas pelas quais passa a execução de cada instrução. Trata-se de um passo preliminar, com vista a simplificar a descrição do funcionamento da pipeline básica Nem todas as instruções necessitam de todas as etapas. As instruções de salto terminam na 2ª etapa. As instruções de escrita em memória terminam na 4ª etapa As instruções de ALU não fazem nada na etapa 4, terminando na etapa 5. Seria possível antecipar a última tarefa da etapa 5 para a etapa 5. Contudo, isso já não será possível na implementação em pipeline, pelo que também não é feito aqui. 16

16 Fundamentos da operação de pipelines Pipeline de cinco andares Pipeline de 5 andares O processamento pode ser implementado com pipeline de 5 andares (aliás a divisão de tarefas da transparência anterior já foi feita a pensar nisso). Ciclo de processador Instrução i IF ID EX MEM WB i + 1 IF ID EX MEM WB i + 2 IF ID EX MEM WB i + 3 IF ID EX MEM WB i + 4 IF ID EX MEM WB Restrição: Não é possível usar os mesmos recursos em duas tarefas diferentes no mesmo ciclo! Memórias cache separadas para dados e instruções evitam conflitos entre IF e MEM AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 17/ A fase IF tem um acesso implícito a memória, pelo que poderia interferir com instruções na fase MEM. Para evitar um conflito, vamos assumir que memória de instruções e memória de dados são diferentes. Embora tal não corresponda estritamente à realidade, a utilização de caches separadas para dados e instruções faz com que seja uma aproximação razoável Para já assumimos que o acesso a memória pode ser feito apenas num ciclo de relógio do processador. Trata-se de uma suposição menos realista que a anterior. Veremos mais tarde como remover esta restrição e de que maneira é afectado o desempenho global As instruções de salto só usam dois andares: IF e ID As instruções de escrita em memória (store) não têm WB Estamos a assumir que as operações executadas em EX apenas necessitam de um ciclo de relógio. Isso não se aplica a operações como a divisão nem a operações com vírgula flutuante. 17

17 Fundamentos da operação de pipelines Pipeline de 5 andares Múltiplos percursos de dados desfasados no tempo O banco de registos tem de suportar 2 leituras e 1 escrita por ciclo. Problema: Salto condicional só modifica PC no andar ID AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 18/ Implicitamente estamos a assumir que existem recursos para executar concorrentemente as várias operações. Por exemplo, o cálculo do novo valor de PC no caso de um salto não pode ser feito pela ALU (que estará ocupada com o processamento de outra instrução) O banco de registos pode tornar-se facilmente num factor de contenção. Vamos assumir que todas as leituras são feitas no fim do ciclo de relógio (por instruções na fase ID) e que a escrita é feita no início do ciclo de relógio (pela instrução que passar para WB). período de relógio escrita leitura Como estamos assumir uma implementação relativamente agressiva dos saltos condicionais, supomos que o PC é modificado no segundo ciclo da instrução (ID). Mesmo assim, os saltos (condicionais ou incondicionais) vão introduzir um conflito de controlo. 18

18 Fundamentos da operação de pipelines Inserção de registos entre andares Pipeline de 5 andares Evitam a interferência entre andares e preservam valores intermédios AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 19/ Sem cuidados especiais, a actividade lógica não pode ser limitada a um certo andar (i.e., os efeitos de qualquer mudança propagar-se-iam mais ou menos rapidamente por todo o circuito). Para evitar essa interferência, todos os os sinais que saem de um andar são registados, ou seja, os seus valores são guardados num elemento de memória (registo) cujo conteúdo apenas é alterado no flanco ascendente do relógio Muitos dos registo já seriam necessários numa implementação multi-ciclo para preservar valores entre os diferentes ciclos Os registos também serão aproveitados para evitar alguns conflitos provocados por dependências de dados (cf. forwarding). 19

19 Fundamentos da operação de pipelines Pipeline de 5 andares Desempenho de pipelines (1ª abordagem) Pipeline idealmente equilibrada: t inst_p = t inst N andares Na prática, o tempo de execução de cada instrução aumenta ligeiramente devido a overhead de controlo. O programa é mais rápido embora nenhuma instrução seja mais rápida! Speedup: S p = t inst /t inst_p Na prática, certa instruções podem necessitar de ciclos de protelamento em algumas circunstâncias. Seja n prot o número médio de ciclos de protelamento por instrução. Então: CPI p = CPI ideal + n prot = 1 + n prot Assumindo que a frequência de relógio é a mesma nos dois casos: S p = CPI 1 + n prot 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 20/ A melhoria de desempenho proporcionada por pipelining é directamente dependente do número médio de ciclos de protelamento. Torna-se, portanto, imperioso reduzir n prot ao mínimo. Como os saltos são, em muitas organizações de CPU, a principal fonte de ciclos de protelamento, torna-se vital reduzir a sua frequência ou o seu impacto A expressão final para S p assume que a frequência de relógio de uma implementação pipelined é igual à de uma implementação multi-ciclo. Na prática, será ligeiramente maior ( 10%). O número de instruções executadas é naturalmente o mesmo. 20

20 Resolução de conflitos Alguns problemas na utilização de pipelines Existem situações (hazards) em que uma instrução não pode ser executada durante o ciclo apropriado. Existem três tipos de conflitos: estruturais É um conflito de recursos: o hardware não suporta a execução concorrente de todas as combinações possíveis de tarefas; de dados Este conflito surge quando uma instrução depende dos resultados de uma instrução anterior de uma forma que afecta o resultado obtido pela linha de processamento. de controlo este conflito resulta de saltos condicionais ou de outras instruções que alteram o PC. Conflitos reduzem o desempenho ideal da pipeline AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 21/ Conflitos de dados e de controlo são devidos, respectivamente, a dependências de dados e de controlo. Conflitos estruturais resultam da inexistência de recursos suficientes para executar algumas operações concorrentemente. 21

21 Resolução de conflitos Protelamento de operações Conflitos podem obrigar a protelar (stall) o processamento de instruções. Habitualmente quando uma instrução é protelada: 1. todas as instruções emitidas posteriormente também são proteladas; 2. todas as instruções emitidas anteriormente devem prosseguir (para limpar a situação de conflito)...resolução.de.conflitos Consequência: durante o protelamento não são processadas novas instruções. Pode não ser economicamente proveitoso eliminar conflitos que ocorram raramente, porque os protelamentos associados são raros (número médio de ciclos de protelamento causados por esses conflitos é baixo). Nota: Existem esquemas em que as instruções emitidas posteriormente podem passar à frente da instrução protelada (se não violarem nenhuma dependência) AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 22/ O protelamento de operação é a solução universal. Contudo, é sempre preciso implementar circuitos de detecção de conflitos (pipeline interlocks). 22

22 Conflitos estruturais Resolução de conflitos Conflitos estruturais A execução concorrente de instruções em pipeline pode requerer que as unidades funcionais sejam também pipelined e que outros recursos sejam duplicados para acomodar todas as combinações possíveis de instruções. O processamento pode exibir conflitos estruturais quando tal não acontece. Exemplo: processador com uma memória cache partilhada para dados/instruções (memória comum de dados e instruções). Ciclo de processador Instrução load IF ID EX MEM WB i + 1 IF ID EX MEM WB i + 2 IF ID EX MEM WB i + 3 stall IF ID EX MEM WB i + 4 IF ID EX MEM WB i + 5 IF ID EX MEM i + 6 IF ID EX Supõe-se que as instruções i + 1, i + 2, etc. não acedem a memória AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 23/ Esta situação não ocorre na organização de base que estamos a analisar, porque assumimos a existência de caches separadas de dados e instruções. 23

23 Resolução de conflitos Conflitos estruturais Ilustração de um conflito estrutural Figura ilustra o confito estrutural que ocorre se o processador não protelar a instrução AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 24/ Notar que não existe nenhum conflito estrutural associado ao banco de registos. Por exemplo, no ciclo 5, ocorrem uma escrita no banco de registos (associado à instrução load) e duas leituras (associadas à instrução 3). Estas operações ocorrem em partes diferentes do ciclo, conforme indicado graficamente pelo tracejado: a escrita acontece no início do ciclo, as leituras no fim. 24

24 Conflitos de dados Resolução de conflitos Conflitos de dados Um grande efeito de pipelining é modificar a temporização relativa das operações, o que pode introduzir conflitos. Conflitos de dados ocorrem quando a ordem de leitura/escrita de operandos é modificada (por referência à versão sem pipelining). Exemplo: DADD R1, R2, R3 DSUB R4, R1, R5 ; ADD altera R1 em WB, mas DSUB requer valor em ID AND R6, R1, R7 ; R1 correcto fim do ciclo 5; AND lê registos no 4 OR R8, R1, R9 ; OR não tem conflitos; leituras na 2ª parte do ciclo XOR R10, R1, R11 ; não tem conflitos 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 25/ O registos R1 é alterado pela primeira instrução. Como o resultado da instrução só atinge os registos no quinto ciclo, a instrução DSUB produz um conflito ao querer usar o novo valor de R1 no quarto ciclo (a sua etapa EX), já que isso implica a leitura dos registos no fim do ciclo anterior (o ciclo 3) A instrução AND também produz um conflito: precisa do novo valor logo no início do quinto ciclo (a sua etapa EX), e portanto, a leitura dos registos foi feita no ciclo anterior, quando o banco de registos ainda tinha o valor antigo de R A instrução OR já não provoca conflito Este tipo de conflito entre instruções da ALU é muito frequente e introduz 2 ciclos de protelamento, o que é muito. Consequentemente, este tipo de conflito deve necessariamente ser resolvido Notar que o conflito surge porque a alteração do banco de registos é efectuada 2 ciclos depois do cálculo do resultado. O resultado propriamente dito já foi calculado (no fim do ciclo 3). 25

25 Resolução de conflitos Conflitos de dados Forwarding pode resolver conflitos de dados O resultado da ALU é realimentado para a sua entrada. O banco de registos (leitura e escrita em partes diferentes do ciclo) também serve para fazer forwarding. A sequência analisada executa sem protelamento AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 26/ O novo valor de R1 é calculado antes de ser necessário para as operações seguintes. Apenas o banco de registos não é actualizado suficientemente depressa Para resolver o conflito, basta agulhar o futuro valor de R1 do registo temporário onde se encontra para a entrada do andar que necessita do seu valor. Locais de origem e destino dos dados estão indicados a tracejado na figura.sempre que o destino estiver à frente da origem, deve proceder-se ao agulhamento necessário Para além dos circuitos de agulhamento (basicamente multiplexadores), o CPU deve dispor também de circuitos de detecção dos conflitos A utilização de forwarding é indispensável para um bom desempenho. 26

26 Resolução de conflitos Conflitos de dados Protelamento pode ser inevitável LD R1, 0(R2) ; dados prontos apenas no fim do ciclo 4 DSUB R4, R1, R5 ; necessita de dados no início de 4 AND R6, R1, R7 OR R8, R1, R AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 27/ O esquema de forwarding não resolve todos os problemas. Por exemplo, o conflito que ocorre quando uma instrução usa um valor lido de memória pela instrução imediatamente precedente não pode ser resolvido desta maneira De facto, o valor ainda não está no CPU no instante em que se pretenderia utilizá-lo. Isso é indicado pelo segmento a tracejado em que o destino (o lugar onde o valor é necessário para o restante processamento) está atrás da origem. 27

27 Resolução de conflitos Conflitos de dados Protelar resolve o problema... Ciclo de processador Instrução LD R1,0(R2) IF ID EX MEM WB DSUB R4, R1, R5 IF ID EX MEM WB AND R6, R1, R7 IF ID EX MEM WB OR R8, R1, R9 IF ID EX MEM WB LD R1,0(R2) IF ID EX MEM WB DSUB R4, R1, R5 IF ID stall EX MEM WB AND R6, R1, R7 IF stall ID EX MEM WB OR R8, R1, R9 stall IF ID EX MEM WB A sequência de etapas de processamento da tabela inferior mostra como o protelamento resolve o problema de ter os dados correctos em R AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 28/ Notar que o processamento de todas as instruções subsequentes à que provoca o conflito também são proteladas A obtenção de instruções (etapa IF) também é protelada. 28

28 Resolução de conflitos Conflitos de controlo Conflitos de controlo Saltos condicionais causam conflitos de controlo porque podem alterar ou não o PC (quando o fazem é no fim de ID). O que fazer enquanto não é possível determinar se o salto é realmente feito (ou tomado)? Nada... e repetir quando já existir a informação. Ciclo de processador Instrução salto relativo IF ID EX MEM WB sucessor IF IF ID EX MEM WB sucessor + 1 IF ID EX MEM WB sucessor + 2 IF ID EX MEM WB Dada a frequência de saltos relativos, estes conflitos podem levar a perdas de desempenho na ordem dos 10% 30%! 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 29/ Nesta arquitectura um salto condicional demora tanto como um salto incondicional. Em ambos os caso, o PC tem o novo valor do endereço no fim da etapa ID Em muitas organizações de pipeline, o salto condicional necessita de mais ciclos que o incondicional A instrução sucessor não pode entrar imediatamente na fase de descodificação. O primeiro IF (da 2ª linha) obtém a instrução do valor regular do PC (a instrução residente em memória a seguir ao salto relativo). Este valor pode não ser o correcto. O segundo IF já usa o valor de PC definido no ciclo 2 (o valor correcto) Quando o salto não é tomado, o segundo IF é desnecessário. Esse facto pode ser aproveitado para reduzir o impacto do conflito de controlo. 29

29 Resolução de conflitos Conflitos de controlo Alternativa: Optar por uma das alternativas O CPU assume que o salto não é tomado e corrige a sua decisão quando determinar o valor da condição (se necessário). Ciclo de processador Instrução salto não tomado IF ID EX MEM WB i + 1 IF ID EX MEM WB i + 2 IF ID EX MEM WB i + 3 IF ID EX MEM WB i + 4 IF ID EX MEM WB salto tomado IF ID EX MEM WB i + 1 IF inact. inact. inact. inact. alvo IF ID EX MEM WB alvo + 1 IF ID EX MEM WB alvo + 2 IF ID EX MEM WB Também se pode partir do princípio que o salto é tomado. No caso presente, isso não tem interesse. (Porquê?) 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 30/ Assumir que o salto é tomado obriga ainda assim a calcular a posição da instrução seguinte ( alvo do salto) Quando o salto é tomado, a instrução subsequente em processamento é errada: internamente é transformado numa instrução NOP (no operation). No nosso caso, isso é simples, porque a instrução ainda não alterou o estado interno do CPU. 30

30 Resolução de conflitos Conflitos de controlo Execução incondicional da instrução seguinte Outra opção: Executar sempre a instrução colocada a seguir ao salto! Ciclo de processador Instrução salto não tomado IF ID EX MEM WB (delay slot) i + 1 IF ID EX MEM WB i + 2 IF ID EX MEM WB i + 3 IF ID EX MEM WB i + 4 IF ID EX MEM WB salto tomado IF ID EX MEM WB (delay slot) i + 1 IF ID EX MEM WB alvo IF ID EX MEM WB alvo + 1 IF ID EX MEM WB alvo + 2 IF ID EX MEM WB 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 31/ A este tipo de salto chama-se delayed btanch e a posição da instrução executada incondicionalmente designa-se por delay slot. Algumas arquitecturas têm dois delay slots Neste caso, o trabalho de encontrar uma instrução para o delay slot é deixado ao compilador ou programador em assembly Caso não seja possível encontrar uma instrução apropriada, coloca-se uma instrução NOP no delay slot. 31

31 Resolução de conflitos Conflitos de controlo Branch delay slot: estratégias de sequenciamento 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 32/ A situação (a) é a melhor. As estratégias (b) e (c) são usadas quando a estratégia (a) não é possível A estratégia (b) requer geralmente a duplicação da instrução colocada no delay slot. Esta estratégia é boa para casos em que o salto é tomado com elevada probabilidade (como no caso dos ciclos) Para que (b) e (c) sejam legais, é necessário que a execução da instrução não altere o resultado do programa. Quando muito, o trabalho executado por essa instrução é desperdiçado No caso do exemplo (c), o registo R7 poderia conter um valor temporário que simplesmente não é usado quando o salto é tomado. Note-se que o caso (b) o valor final de R4 não é o mesmo; se isso for importante, a duplicação da instrução não pode ser feita. 32

32 Resolução de conflitos Conflitos de controlo Impacto da arquitectura do conjunto de instruções A arquitectura do conjunto de instruções pode introduzir factores de ineficiência e dificuldades de implementação. Instruções que que alteram o estado a meio da execução dificultam o tratamento de excepções. Exemplos: auto-incremento em IA-32. O processador necessita de ter a capacidade para reverter o estado. Instruções de cópia de strings também pertencem a esta categoria (solução: usar registos como memória de trabalho). Alguns elementos de estado (p. ex. códigos de condição) podem dificultar o funcionamento da pipeline (p. ex. instruções que alterem os c.c. não podem ser colocadas no delay slot). Pode ser difícil determinar quando é que o código de condição é válido. Instruções multi-ciclo introduzem grandes desequilíbrios (instruções podem demorar de 1 a >100 ciclos). Solução: pipeline de microcódigo (VAX8800, IA-32 depois de 1995) AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 33/ Na arquitectura IA-32, a utilização modos de endereçamento com auto-incremento implica a actualização de registos a meio da execução do programa Durante muito tempo, partiu-se do princípio que a interacção entre a arquitectura do conjunto de instruções e a implementação era reduzida, pelo que s questões de implementação não tinham peso na concepção dos conjuntos de instruções. A partir dos anos 80 tornou-se claro que a dificuldade de implementar pipelines e a sua ineficiência podem ser aumentadas por más escolhas a nível da ACI. 33

33 Tratamento de instruções complexas Unidades funcionais adicionais EX int EX VF/int mul IF ID MEM WB EX VF soma EX VF/nt div As unidade de execução não são pipelined AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 34/ Este acetato mostra a forma mais simples de tratar operações cuja execução seja demorada. Para evitar que o ciclo de relógio tenha que ser alongado para executar essas operações, permite-se que uma instrução gaste mais que um ciclo no estado de execução. Além disso, também é conveniente dispor de unidades de execução separadas para os diferentes tipos de operações A abordagem geral consiste em repetir fase de execução tantas vezes quantas as necessárias. Neste contexto, a detecção de conflitos torna-se mais complicada: uma instrução não pode passar de ID para EX (i.e., não pode ser emitida) se necessitar de uma unidade em uso (o que é fácil de detectar) ou se provocar um conflito de dados. Antes de analisar a forma como essa detecção pode ser feita, é útil generalizar a pipeline indicada acima de forma a permitir que as unidades de execução também sejam, elas próprias, pipelined. 34

34 Tratamento de instruções complexas Latência e intervalos de repetição Em geral, (algumas das) unidades de execução multi-ciclo também devem ser transformadas em pipeline. Também deve ser possível ter múltiplas instruções em execução para aproveitar todos os recursos disponíveis. latência número de ciclos entre a instrução que produz um resultado e a instrução que a usa; intervalo de repetição número mínimo de ciclos entre a emissão de duas instruções de um dado tipo. Unidade funcional Latência Intervalo ALU (inteiros) 0 1 Memória de dados 1 1 Somador VF 3 1 Multiplicador (VF e int.) 6 1 Divisor (VF e int.) AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 35/ Consequência da definição de latência: A maioria das instruções consome os seus operandos no início do ciclo EX. Para estas instruções, a latência é igual ao número de andares (contados após o primeiro andar de EX) necessários para produzir o resultado pretendido (ver tabela do acetato) A principal excepção à observação anterior é constituída pelas operações de store, que consome um dos seus operandos um ciclo mais tarde (a latência vem reduzida de um ciclo para o operando que representa o valor a guardar, mas não para o operando que especifica o endereço de memória) Para obter uma frequência de operação maior (i.e., reduzir o ciclo de relógio) é preciso diminuir a quantidade de processamento feito em cada ciclo, o que implica que a execução requer mais ciclos, o que por sua vez aumenta a latência. Conclusão: frequência de relógio maior implica maior latência (para uma mesma tecnologia de implementação) Os acessos a memória usam a unidade inteira para cálculo do endereço. Acessos a memória demoram sempre o mesmo tempo, seja para dados inteiros ou de vírgula flutuante. 35

35 Tratamento de instruções complexas Unidades com pipeline 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 36/ Esta organização (que corresponde à tabela do acetato anterior) suporta múltiplas instruções em execução simultaneamente. A unidade de divisão não é pipelined (a unidade inteira também não, mas esta apenas necessita de um ciclo) Na ausência de saltos, esta organização permite manter o débito de uma instrução por ciclo, desde que não existam conflitos de dados ou estruturais, nem sejam usadas instruções de divisão. Qualquer uma destas situação faz com que o CPI desça abaixo de 1 (o valor máximo) A principal implicação da introdução de unidades de execução de latência diferente é que agora podem surgir conflitos RAW que não podem ser resolvidos por forwarding (como anteriormente). Também podem surgir conflitos WAW (que não surgiam antes) Podem surgir igualmente outros tipos de conflitos estruturais. Em particular, instruções de divisão podem encontrar a unidade de divisão já em uso. 36

36 Conflitos RAW Instruções independentes: Tratamento de instruções complexas Nota: A instrução S.D protela um ciclo extra para que a sua fase MEM não entre em conflito com a instrução ADD.D. Este conflito é estrutural. Poderia ser resolvido com uma unidade adicional para cálculo de endereços (um somador) AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 37/ A tabela superior mostra a operação da nova organização para instruções independentes (logo, não surgem conflitos do tipo RAW). As etiquetas em itálico indicam andares em que são consumidos operandos, enquanto as etiquetas a negrito indicam os andares que produzem dados Pode ocorrer um conflito estrutural no acesso ao banco de registos para escrita (fases MEM e WB), já que mais que uma instrução pode terminar a fase de execução no mesmo ciclo (i.e., ficar pronta a passar para o estado MEM). Por exemplo, na tabela inferior a última instrução protela um ciclo adicional (ciclo 16) para não escrever o seu resultado ao mesmo tempo que a instrução ADD.D A tabela inferior mostra a ocorrência de protelamentos devido à diferença de latência entre as unidades de execução. Por exemplo, a intrução de soma tem de esperar 6 ciclos pelo resultado da multiplicação. Este atraso não pode ser resolvido por forwarding, já que o resultado pretendido apenas está calculado no ciclo

37 Conflitos WAW Tratamento de instruções complexas No ciclo 11, três instruções tentam escrever nos registos. (Este não é o pior caso.) Não existe nenhum conflito estrutural irresolúvel no ciclo 10, porque apenas a instrução L.D usa de facto a memória AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 38/ A tabela não mostra directamente um conflito WAW A tabela ilustra uma situação hipotética (i.e., que não ocorrerá com detecção de conflitos) em que três instruções passariam simultaneamente aos estados MEM e WB. Na implementação estudada, trata-se de um conflito estrutural. Contudo, este conflito não é intrinsecamente irresolúvel, já que apenas uma instrução acede de facto a memória. Contudo, a sua resolução dependeria da possibilidade de escrever mais que um valor no banco de registos simultaneamente. Tal seria de facto possível com uma implementação mais sofisticada do banco de registos, o que presumivelmente não se justifica neste caso, já que o número de conflitos WAW é previsivelmente baixo Caso a instrução L.D fosse iniciada um ciclo mais cedo, existiria de facto um conflito WAW na escrita de F2. 38

38 Tratamento de instruções complexas Detecção de conflitos Assumindo que a detecção de conflitos é feita no andar ID, três tipos de verificações são necessários. Conflito estrutural Esperar até a unidade funcional pretendida estar livre (para divisões) e garantir o acesso ao porto de escrita do banco de registos. Conflito RAW Esperar até que os registos-fonte não estejam etiquetados como destinos de um cálculo pendente que não esteja terminado quando o seu resultado for necessário. Estas verificações dependem do tipo de operandos envolvido. Conflito WAW Determinar se alguma instrução em A1,..., A4, D, M1,..., M7 tem o mesmo destino que a instrução em ID. Se esse for o caso, protelar AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 39/ Nos exemplos usados, assumir sempre que a deteção de conflitos é efectuadao no andar ID. Ou seja: o sistema de deteção de conflitos deve detectar conflitos entre a instrução em ID e qualquer instrução já em execução, i.e., a ser processada num andar posterior (mais à direita nos diagramas) Os conflitos WAW serão raros na prática. 39

39 Tratamento de instruções complexas Desempenho de vírgula flutuante 2006 AAC (FEUP/MIEIC) Execução concorrente de instruções: Pipelines 40/ A figura mostra o número médio de ciclos de protelamento atribuídos a operações de vírgula flutuante (i.e., ciclos de protelamento introduzidos quando uma instrução de VF estava no andar de ID). A figura inclui dados para uma unidade adicional (comparação), de complexidade similar à unidade de soma Por exemplo, o número médio de ciclos de protelamento para somas é de 1.7 ciclos (cerca de 56% da sua latência de 3 ciclos) Como é de esperar, o número de ciclos de protelamento provocados por uma instrução é directamente proporcional à sua latência. (Já que esta determina quantas instruções já emitidas podem estar em conflito com uma dada instrução.) Apenas os resultados sobre os conflitos estruturais (divisão) dependem da taxa de ocorrência das instruções. Os outros dependem apenas da latência das operações e das dependências de dados Os conflitos estruturais de divisão são raros, já que a taxa de ocorrência deste tipo de instruções é baixa. 40

Encadeamento de instruções

Encadeamento de instruções Encadeamento de instruções (Pipelines) Outubro de 2010 (FEUP/DEEC) Pipelines Outubro de 2010 1 / 62 Assuntos 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação

Leia mais

Pipelines. João Canas Ferreira. Mar-Abr Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap.

Pipelines. João Canas Ferreira. Mar-Abr Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap. Pipelines João Canas Ferreira Mar-Abr 2004 Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap. 6) c JCF, 2004 ASPD (FEUP/LEEC) Pipelines 1/52 Conceitos básicos

Leia mais

Arquitetura e Organização de Processadores. Aula 4. Pipelines

Arquitetura e Organização de Processadores. Aula 4. Pipelines Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aula 4 Pipelines 1. Introdução Objetivo: aumento de

Leia mais

Mestrado Integrado em Engenharia Informática e Computação. Arquitecturas Avançadas de Computadores Exame final

Mestrado Integrado em Engenharia Informática e Computação. Arquitecturas Avançadas de Computadores Exame final FEUP Mestrado Integrado em Engenharia Informática e Computação Arquitecturas Avançadas de Computadores Exame final 2011-01-11 Duração: 2H00m Com consulta Atenção: Este exame tem 6 questões em 8 páginas,

Leia mais

Implementação de pipelines

Implementação de pipelines Implementação de pipelines João Canas Ferreira Novembro de 2005 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3ª. ed., MKP JCF, 2005 AAC (FEUP/LEIC) Implementação

Leia mais

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é

1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é 1. A pastilha do processador Intel 80486 possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é organizado com mapeamento associativo por conjuntos de quatro

Leia mais

Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores. 2º sem.

Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores. 2º sem. Instituto Superior Técnico Departamento de Engenharia Electrotécnica e de Computadores Arquitectura de Computadores º sem. / // º Teste Duração:, horas Grupo I Superpilining [ valores] Admita que tem um

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 8ª Aula Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Estágios para execução da instrução: A instrução LOAD é a mais longa Todas as instruções seguem ao menos os

Leia mais

Organização de Unidades de Processamento

Organização de Unidades de Processamento Organização de Unidades de Processamento João Canas Ferreira Março de 2004 Contém figuras de: Computer Organization & Design, D. A Patterson e J. L. Hennessy, 2 a ed. (cap. 5) c JCF, 2004 ASPD (FEUP/LEEC)

Leia mais

Arquitetura e Organização de Computadores

Arquitetura e Organização de Computadores Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado nos slides do capítulo

Leia mais

AULA DE REVISÃO 3 ILP

AULA DE REVISÃO 3 ILP AULA DE REVISÃO 3 ILP Exercício 1: Considere um bloco de código com 15 instruções cada uma com tempo de execução Tex. Elas são executadas numa unidade pipeline de 5 estágios. Os overheads do pipeline são

Leia mais

Sistemas de Microprocessadores DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA UNIVERSIDADE DE COIMBRA.

Sistemas de Microprocessadores DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA UNIVERSIDADE DE COIMBRA. Sistemas de Microprocessadores DEP. DE ENG.ª ELECTROTÉCNICA E DE COMPUTADORES FACULDADE DE CIÊNCIAS E TECNOLOGIA UNIVERSIDADE DE COIMBRA Pipelining Pipelining é uma técnica que permite a execução de múltiplas

Leia mais

Explorando o paralelismo entre instruções

Explorando o paralelismo entre instruções Explorando o paralelismo entre instruções Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Pipeline Pipeline: Uma idéia natural Linhas de montagem

Leia mais

Arquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade

Arquitetura e Organização de Processadores. Aulas 06 e 07. Superescalaridade Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aulas 06 e 07 Superescalaridade 1. Introdução princípios

Leia mais

1.0 val. (b) Determine o CPI do processador na execução do código indicado. Num.: Nome: Pág. 1. Arquitecturas Avançadas de Computadores (AAC)

1.0 val. (b) Determine o CPI do processador na execução do código indicado. Num.: Nome: Pág. 1. Arquitecturas Avançadas de Computadores (AAC) 1. Considere um processador in-order com 5 estágios (IF, ID, EX1, EX2, WB) sem qualquer mecanismo de forwarding de dados, e o seguinte troço de código. Memória de instruções Operação MOV R1,R0 ; R1 R0

Leia mais

Microprocessadores. Execução em Paralelo Pipelines

Microprocessadores. Execução em Paralelo Pipelines Execução em Paralelo Pipelines António M. Gonçalves Pinheiro Departamento de Física Covilhã - Portugal pinheiro@ubi.pt Pipelines de Instrucções Instrucções são divididas em diferentes Estágios Pipelines

Leia mais

1. Considere a execução do seguinte troço de código num processador com ISA compatível

1. Considere a execução do seguinte troço de código num processador com ISA compatível 1. Considere a execução do seguinte troço de código num processador com ISA compatível com o MIPS64. loop: L.D F0,0(R1) ; F0 M[R1+0] L.D F2,8(R1) ; F2 M[R1+8] L.D F4,0(R2) ; F4 M[R2+0] SUB.D F0,F0,F2 ;

Leia mais

ORGANIZAÇÃO DE COMPUTADORES

ORGANIZAÇÃO DE COMPUTADORES ORGANIZAÇÃO DE COMPUTADORES 2015/2016 1 o Semestre Repescagem 1 o Teste 1 de Fevereiro de 2016 Duração: 1h00 - O teste é sem consulta e sem calculadora. - Resolva o teste no próprio enunciado, o espaço

Leia mais

Memórias cache: uma introdução

Memórias cache: uma introdução Memórias cache: uma introdução João Canas Ferreira Dezembro de 2006 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3ª. ed., MKP 2006 AAC (FEUP/MIEIC) Memórias

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 10ª Aula Pipeline Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Dependências ou Conflitos (Hazards) Conflitos Estruturais Pode haver acessos simultâneos à memória

Leia mais

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

Introdução. Os mesmos princípios se aplicam a processadores. No MIPS as instruções são divididas normalmente em cinco etapas: CAPÍTULO 5 PIPELINE Introdução Ciclo único versus pipeline Projetando o conjunto de instruções Pipeline Hazards Caminho de dados usando o pipeline Diagramas de Pipeline Controle do Pipeline Hazard de dados

Leia mais

shift register demux prefetch control inc ldpc + 1 MAR Pipelining

shift register demux prefetch control inc ldpc + 1 MAR Pipelining Unidade de prefetch (com uma só AM) MB_oe32 shift register 32 MB_oe8_s AM data 32 addr rd 0 1 P7 P6 demux 32 32 P5 shctrl 2 inc P4 load P3 prefetch control ldpc PC + 1 P2 2 P1 P0 8 read8 read32 MB_oe8_u

Leia mais

Resolva as seguintes alíneas fazendo todas as simplificações que considerar convenientes, anotando-as junto da resposta.

Resolva as seguintes alíneas fazendo todas as simplificações que considerar convenientes, anotando-as junto da resposta. 1. Considere um processador com ISA compatível com o MIPS64 e com funcionamento superpelining (Fetch, Decode, Issue, Execute, Write-back), com mecanismos de forwarding de dados, sendo o estágio de Execute

Leia mais

SSC0510 Arquitetura de Computadores

SSC0510 Arquitetura de Computadores SSC0510 Arquitetura de Computadores 9ª Aula Pipeline Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Dependências ou Conflitos (Hazards) Conflitos Estruturais Pode haver acessos simultâneos à memória

Leia mais

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW

Infraestrutura de Hardware. Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW Infraestrutura de Hardware Melhorando Desempenho de Pipeline Processadores Superpipeline, Superescalares, VLIW Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem

Leia mais

28 de Abril de Aula 14

28 de Abril de Aula 14 28 de Abril de 2005 1 Arquitecturas superescalares Aula 14 Estrutura desta aula Arquitecturas VLIW e superescalares Emissão de instruções Emissão de 2 vias Superescalares com agendamento dinâmico Exemplo

Leia mais

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador.

1) Enumere e dê exemplo dos tipos de conflitos que podem ocorrer em um pipeline de instruções de um processador. Arquitetura de Computadores II Bacharelado em Ciência da Computação DCC - IM/UFRJ Prof.: Gabriel P. Silva Data: 18/04/2005 1 ª Lista de Exercícios de Arquitetura de Computadores II 1) Enumere e dê exemplo

Leia mais

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto

COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES. Adão de Melo Neto COMPUTADORES COM UM CONJUNTO REDUZIDO DE INSTRUÇÕES Adão de Melo Neto 1 INTRODUÇÃO Desde 1950, houveram poucas inovações significativas nas áreas de arquitetura e organização de computadores. As principais

Leia mais

Resumão de Infra-estrutura de Hardware

Resumão de Infra-estrutura de Hardware Resumão de Infra-estrutura de Hardware Referência: Patterson & Hennessy - Organização e Projeto de Computadores Vanessa Gomes de Lima vgl2@cin.ufpe.br 1 MELHORANDO O DESEMPENHO COM PIPELINING Pipelining

Leia mais

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

Exercícios resolvidos (aula de 4 de Maio) Resolução: Exercícios resolvidos (aula de 4 de Maio) 1. Um microprocessador gera endereços de memória de 14 bits. Desenhe um mapa de memória dos seus endereços de memória fronteira especificados em hexadecimal. Uma

Leia mais

Arquitectura de Computadores II. Pipelining Avançado e Paralelismo ao Nível da Instrução (ILP Instruction Level Paralelism)

Arquitectura de Computadores II. Pipelining Avançado e Paralelismo ao Nível da Instrução (ILP Instruction Level Paralelism) Arquitectura de Computadores II LESI - 3º Ano Pipelining Avançado e Paralelismo ao Nível da Instrução (ILP Instruction Level Paralelism) João Luís Ferreira Sobral Departamento do Informática Universidade

Leia mais

Escalonamento de Instruções

Escalonamento de Instruções Universidade Federal do Rio de Janeiro Pós-Graduação em Informática Microarquiteturas de Alto Desempenho Escalonamento de Instruções Introdução Otimização de código é necessária como forma de diminuir

Leia mais

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

MIPS Implementação. sw) or, slt. Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS Datapath do MIPS MIPS Implementação Vamos examinar uma implementação que inclui um subconjunto de instruções do MIPS Instruções de leitura (load lw) e de escrita (store sw) Instruções aritméticas e lógicas

Leia mais

Paralelismo ao Nível das Instruções p. 1

Paralelismo ao Nível das Instruções p. 1 Paralelismo ao Nível das Instruções Luís Nogueira luis@dei.isep.ipp.pt Departamento Engenharia Informática Instituto Superior de Engenharia do Porto Paralelismo ao Nível das Instruções p. 1 Como melhorar

Leia mais

O estudo da arquitectura de computadores efectua-se com recurso à Abstracção

O estudo da arquitectura de computadores efectua-se com recurso à Abstracção ARQUITECTURA DE COMPUTADORES O estudo da arquitectura de computadores efectua-se com recurso à Abstracção Podemos ver um computador de várias formas. Para um utilizador normalmente o computador é a aplicação

Leia mais

Pipelining. Luís Nogueira. Departamento Engenharia Informática Instituto Superior de Engenharia do Porto. Pipelining p.

Pipelining. Luís Nogueira. Departamento Engenharia Informática Instituto Superior de Engenharia do Porto. Pipelining p. Pipelining Luís Nogueira luis@dei.isep.ipp.pt Departamento Engenharia Informática Instituto Superior de Engenharia do Porto Pipelining p. Análise de performance Desenho ciclo único de relógio é ineficiente

Leia mais

Architectures for Embedded Computing

Architectures for Embedded Computing Architectures for Embedded Computing dinâmico / especulativo Prof. Nuno Roma ACEmb 2009/10 - DEI-IST 1 / 44 Aula anterior Na aula anterior... Pipelining: Problemas de Implementação instruções multi-ciclo

Leia mais

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE

CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE CAPÍTULO 4 CAMINHO DE DADOS E CONTROLE Introdução Uma implementação MIPS básica Sinopse da implementação Sinais de controle Multiplexadores (muxes) Implementação monociclo Metodologia de clocking Construindo

Leia mais

Arquitetura de Computadores I

Arquitetura de Computadores I Arquitetura de Computadores I Cap. 06 Pipeline Prof. M.Sc. Bruno R. Silva Plano de aula Visão geral de pipelining Um caminho de dados usando pipelie Controle de um pipeline Hazards de dados e forwarding

Leia mais

Sequenciamento dinâmico

Sequenciamento dinâmico Sequenciamento dinâmico João Canas Ferreira Outubro de 2004 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3 a. ed., MKP c JCF, 2004 AAC (FEUP/LEIC) Sequenciamento

Leia mais

Predição de Desvios e Processadores Superescalares Especulativos

Predição de Desvios e Processadores Superescalares Especulativos Predição de Desvios e Processadores Superescalares Especulativos Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Tomasulo Especulativo Se os

Leia mais

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções

Processadores Superescalares - Avançando na exploração de paralelismo entre instruções Processadores Superescalares - Avançando na exploração de paralelismo entre instruções Arquiteturas para Alto Desmpenho Prof. pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac Instruction

Leia mais

Pipeline. Prof. Leonardo Barreto Campos 1

Pipeline. Prof. Leonardo Barreto Campos 1 Pipeline Prof. Leonardo Barreto Campos 1 Sumário Introdução; Pipeline Hazards: Hazards Estruturais Hazards de Dados Hazards de Controle Caminho de Dados usando Pipeline; Representação Gráfica do Pipeline;

Leia mais

Conflitos. Aula 9. 31 de Março de 2005 1

Conflitos. Aula 9. 31 de Março de 2005 1 Conflitos Aula 9 31 de Março de 2005 1 Estrutura desta aula Taxonomia dos conflitos Dependências entre instruções Conflitos num pipeline Conflitos estruturais Conflitos de dados Conflitos de controlo Ref:

Leia mais

Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM. Pipeline. Gabriel P. Silva. Gabriel P. Silva

Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM. Pipeline. Gabriel P. Silva. Gabriel P. Silva Univ ersidade Feder al do Rio de Janei ro Informáti ca DCC/IM Arquitetura de Computadores II Pipeline Introdução Pipeline é uma técnica de implementação de processadores que permite a sobreposição temporal

Leia mais

Organização de Computadores

Organização de Computadores Organização do Processador - Parte A Capítulo 5 Patterson & Hennessy Prof. Fábio M. Costa Instituto de Informática Universidade Federal de Goiás Conteúdo Caminho de dados Caminho de controle Implementação

Leia mais

Arquiteturas RISC e CISC. Adão de Melo Neto

Arquiteturas RISC e CISC. Adão de Melo Neto Arquiteturas RISC e CISC Adão de Melo Neto 1 Arquitetura RISC Arquitetura RISC. É um das inovações mais importantes e interessantes. RISC significa uma arquitetura com um conjunto reduzido de instruções

Leia mais

I. Considere os seguintes processadores A e B, ambos com arquitectura em pipeline, conforme ilustrado

I. Considere os seguintes processadores A e B, ambos com arquitectura em pipeline, conforme ilustrado Arquitectura de Computadores 2 o Semestre (2013/2014) MEAer 2 o Teste - 19 de Junho de 2014 Duração: 1h30 + 0h15 Regras: Otesteésemconsulta, apenas tem disponível o anexo que lhe deverá ter sido entregue

Leia mais

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira

ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES. Prof. Juliana Santiago Teixeira ORGANIZAÇÃO DE COMPUTADORES CAPÍTULO 6: PROCESSADORES Prof. Juliana Santiago Teixeira julianasteixeira@hotmail.com INTRODUÇÃO INTRODUÇÃO O processador é o componente vital do sistema de computação, responsável

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução

Leia mais

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve:

Pipeline. Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio. Estrutura da CPU. Em cada ciclo, a CPU deve: Pipeline Ciclos de Operação da CPU Estágios do Pipeline Previsão de Desvio William Stallings - Computer Organization and Architecture, Chapter 12 [Trad. E.Simões / F.Osório] Estrutura da CPU Em cada ciclo,

Leia mais

4. Modelo de Programação do DLX Introdução

4. Modelo de Programação do DLX Introdução 4. Modelo de Programação do DLX Quero que o matemático Beremiz Samir nos conte uma lenda, ou uma simples fábula, na qual apareça uma divisão de 3 por 3 indicada, mas não efetuada, e outra de 3 por 2, indicada

Leia mais

AOC II - Arquitetura e Organização de Computadores Prof. Dr. rer. nat. Daniel Duarte Abdala. Lista de Exercícios

AOC II - Arquitetura e Organização de Computadores Prof. Dr. rer. nat. Daniel Duarte Abdala. Lista de Exercícios Lista de Exercícios PIPELINING 1. Qual a vantagem que a utilização da técnica de pipelining traz em relação a arquitetura MIPS-Multiciclo estudada em aula? Descreva textualmente. 2. Embora o desempenho

Leia mais

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

Infraestrutura de Hardware. Implementação Monociclo de um Processador Simples Infraestrutura de Hardware Implementação Monociclo de um Processador Simples Componentes de um Computador Unid. Controle Controle Memória Registradores PC MAR IR AC Programa + Dados Instrução Endereço

Leia mais

Aspectos quantitativos elementares

Aspectos quantitativos elementares Aspectos quantitativos elementares João Canas Ferreira Setembro de 2010 João Canas Ferreira (FEUP) Aspectos quantitativos elementares Setembro de 2010 1 / 16 Assuntos 1 Benchmarks O que medir? Tipos de

Leia mais

Capítulo 6 Hazards Morgan Kaufmann Publishers. Ch6c 1

Capítulo 6 Hazards Morgan Kaufmann Publishers. Ch6c 1 Capítulo 6 Hazards 1998 organ Kaufmann Publishers Ch6c 1 Dependências de Dados Problema: iniciar uma instrução antes da anterior ter finalizado dependências que voltam no tempo são hazards de dados qual

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ORGANIZAÇÃO COMPUTACIONAL INTRODUÇÃO À TECNOLOGIA DA ORGANIZAÇÃO COMPUTACIONAL PROFESSOR CARLOS MUNIZ ORGANIZAÇÃO DE UM COMPUTADOR TÍPICO Memória: Armazena dados e programas Processador (CPU - Central Processing Unit): Executa

Leia mais

1. Considere um processador super-pipelined com 4 estágios (IF,ID,EX,WB), a operar à frequência de 1GHz, e com as seguintes caracteristicas:

1. Considere um processador super-pipelined com 4 estágios (IF,ID,EX,WB), a operar à frequência de 1GHz, e com as seguintes caracteristicas: 1. Considere um processador super-pipelined com 4 estágios (IF,ID,EX,WB), a operar à frequência de 1GHz, e com as seguintes caracteristicas: unidades funcionais pipelined com as seguintes latências: 1

Leia mais

Esse programa inclui dependências de tipo: escrita-escrita, leitura-escrita e escrita-leitura. Identifique e mostre estas dependências.

Esse programa inclui dependências de tipo: escrita-escrita, leitura-escrita e escrita-leitura. Identifique e mostre estas dependências. Faculdade de Computação Arquitetura e Organização de Computadores 2 2 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 02/06/2016 Problemas: P1) Qual é o propósito do instruction pipelining?

Leia mais

Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018

Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018 Problemas: Faculdade de Computação Arquitetura e Organização de Computadores 2 3 a Lista de Exercícios Prof. Cláudio C. Rodrigues Data de Entrega: 22/11/2018 P1) Qual é o propósito do instruction pipelining?

Leia mais

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. Pipeline

Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação. Arquitetura de Computadores I. Pipeline Universidade Federal do Rio de Janeiro Bacharelado de Ciência da Computação Arquitetura de Computadores I Pipeline Gabriel P. Silva 29.04.2017 Introdução Pipeline é uma técnica de implementação de processadores

Leia mais

MO401. Arquitetura de Computadores I

MO401. Arquitetura de Computadores I Arquitetura de Computadores I 2006 Prof. Paulo Cesar Centoducatte ducatte@ic.unicamp.br www.ic.unicamp.br/~ducatte 4.1 Arquitetura de Computadores I Paralelismo em Nível de Instruções Exploração Dinâmica

Leia mais

Parte 7 Pipeline: Conceitos básicos, implementação e ganho de desempenho

Parte 7 Pipeline: Conceitos básicos, implementação e ganho de desempenho Parte 7 Pipeline: Conceitos básicos, implementação e ganho de desempenho 1 Melhorando o Desempenho com Pipelining Baseado nas anotações do Livro do Hennessey & Patterson e no material do Prof. José Luís

Leia mais

Aula 19: UCP: Construindo um Caminho de Dados (Parte III)

Aula 19: UCP: Construindo um Caminho de Dados (Parte III) Aula 19: UCP: Construindo um Caminho de Dados (Parte III) Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Caminho de Dados (III) FAC 1 /

Leia mais

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída)

Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Paradigmas de Computação Paralela (UCE Computação Paralela Distribuída) Modelos de consistência de memória João Luís Ferreira Sobral jls@... 29 Março 2011 Resumo Revisão: modelos de threads Qual a necessidade

Leia mais

Microcontroladores e Interfaces

Microcontroladores e Interfaces Microcontroladores e Interfaces 3º Ano Eng. Electrónica Industrial Carlos A. Silva 2º Semestre de 2005/2006 http://www.dei.uminho.pt/lic/mint Aula A3 15 Mar 05 - M Datapath e a sua Unidade de Controlo

Leia mais

SSC0902 Organização e Arquitetura de Computadores

SSC0902 Organização e Arquitetura de Computadores SSC0902 Organização e Arquitetura de Computadores 13ª Aula Definição de Pipeline e Pipeline da arquitetura MIPS Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br Arquitetura CISC CISC Complex Instruction

Leia mais

Organização de computadores. Aula 05

Organização de computadores. Aula 05 Organização de computadores Aula 05 2 Níveis de um computador Computadores possuem uma série de níveis Cada um construído sobre seus antecessores Cada um representa uma abstração distinta com diferentes

Leia mais

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

Infraestrutura de Hardware. Implementação Pipeline de um Processador Simples Infraestrutura de Hardware Implementação Pipeline de um Processador Simples Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e executado

Leia mais

Conjunto de Instruções. Alisson Brito

Conjunto de Instruções. Alisson Brito Conjunto de Instruções Alisson Brito 1 1 O que é o Conjunto de Instruções? Instruction Set Architecture (ISA) Interface entre Programas e CPU A coleção completa de instruções reconhecidas pela CPU Programas

Leia mais

2. A influência do tamanho da palavra

2. A influência do tamanho da palavra 1. Introdução O processador é o componente vital do sistema de computação, responsável pela realização das operações de processamento (os cálculos matemáticos etc.) e de controle, durante a execução de

Leia mais

http://www.ic.uff.br/~debora/fac! 1 Conceito de família IBM System/360 1964 DEC PDP-8 Separa arquitetura de implementação Unidade de controle microprogramada Idéia de Wilkes 1951 Produzida pela IBM S/360

Leia mais

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação. Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação Organização e Arquitetura de Computadores I Organização e Arquitetura Básicas

Leia mais

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW

Arquitetura e Organização de Processadores. Aula 08. Arquiteturas VLIW Universidade Federal do Rio Grande do Sul Instituto de Informática Programa de Pós-Graduação em Computação Arquitetura e Organização de Processadores Aula 08 Arquiteturas VLIW 1. Introdução VLIW é Very

Leia mais

Aula 16: UCP: Conceitos Básicos e Componentes

Aula 16: UCP: Conceitos Básicos e Componentes Aula 16: UCP: Conceitos Básicos e Componentes Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Conceitos Básicos e Componentes FAC 1 / 34

Leia mais

Organização de Sistemas de Computadores

Organização de Sistemas de Computadores Organização de Sistemas de Computadores Cap. 2 (Tanenbaum), Cap. 3 (Weber) 2.1 Processadores 1 CPU UC = buscar instruções na memória principal e determinar o seu tipo ULA = adição e AND Registradores =

Leia mais

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva

Universidade Federal do Rio de Janeiro Pós-Graduação em Informática. Introdução. Gabriel P. Silva. Gabriel P. Silva Universidade Federal do Rio de Janeiro Pós-Graduação em Informática Microarquiteturas de Alto Desempenho Introdução Introdução Bibliografia: Computer Architecture: A Quantitative Approach. John L. Hennesy,

Leia mais

Arquiteturas de Computadores

Arquiteturas de Computadores Arquiteturas de Computadores Implementação de IPS multiciclo Fontes dos slides: Patterson & Hennessy book website (copyright organ Kaufmann) e Dr. Sumanta Guha Problemas de projeto monociclo Assumindo

Leia mais

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

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples Infraestrutura de Hardware Implementação Multiciclo de um Processador Simples Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é entendido e

Leia mais

Paralelismo ao Nível da Instrução

Paralelismo ao Nível da Instrução Arquitectura de Computadores II 3º Ano Paralelismo ao Nível da Instrução (execução encadeada de instruções e super-escalaridade) João Luís Ferreira Sobral Departamento do Informática Universidade do Minho

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Arquitectura de Computadores MEEC (2014/15 2º Sem.)

Arquitectura de Computadores MEEC (2014/15 2º Sem.) Arquitectura de Computadores MEEC (2014/15 2º Sem.) Unidade de Controlo Prof. Nuno Horta PLANEAMENTO Introdução Unidade de Processamento Unidade de Controlo Arquitectura do Conjunto de Instruções Unidade

Leia mais

1 REPRESENTAÇÃO DIGITAL DE INFORMAÇÃO Bases de Numeração Representação de Números em Base 2 5

1 REPRESENTAÇÃO DIGITAL DE INFORMAÇÃO Bases de Numeração Representação de Números em Base 2 5 PREFÁCIO 1 REPRESENTAÇÃO DIGITAL DE INFORMAÇÃO 1 1.1 Bases de Numeração 3 1.1.1 Representação de Números Inteiros em Base b 3 1.1.2 Representação de Números em Base 2 5 1.1.3 Representação de Números Fraccionários

Leia mais

Aula 15: Ciclo de Execução e Introdução ao Pipeline

Aula 15: Ciclo de Execução e Introdução ao Pipeline Aula 15: Ciclo de Execução e Introdução ao Pipeline Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Ciclo de Execução; Intro ao Pipeline FAC

Leia mais

Execução concorrente de instruções: Aspectos avançados

Execução concorrente de instruções: Aspectos avançados Execução concorrente de instruções: Aspectos avançados João Canas Ferreira Novembro de 2006 Contém figuras de Computer Architecture: A Quantitative Approach, J. Hennessey & D. Patterson, 3ª. ed., MKP 2006

Leia mais

Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.)

Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.) Arquitectura de Computadores LEEC/MEEC (2006/07 2º Sem.) Nuno Cavaco Gomes Horta Universidade Técnica de Lisboa / Instituto Superior Técnico Sumário Introdução Unidade de Processamento Conjunto de Instruções

Leia mais

Microarquiteturas Avançadas

Microarquiteturas Avançadas Universidade Federal do Rio de Janeiro Arquitetura de Computadores I Microarquiteturas Avançadas Gabriel P. Silva Introdução As arquiteturas dos processadores têm evoluído ao longo dos anos, e junto com

Leia mais

Computadores e Programação (DCC/UFRJ)

Computadores e Programação (DCC/UFRJ) Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo

Leia mais

Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline

Aula 21: UCP: Instrução Jump, Monociclo vs. Multiciclo, Pipeline Aula 21: UCP: Instrução Jump, Monociclo vs Multiciclo, Pipeline Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) UCP: Jump, Multiciclo, Pipeline

Leia mais

Infraestrutura de Hardware. Funcionamento de um Computador

Infraestrutura de Hardware. Funcionamento de um Computador Infraestrutura de Hardware Funcionamento de um Computador Computador: Hardware + Software Perguntas que Devem ser Respondidas ao Final do Curso Como um programa escrito em uma linguagem de alto nível é

Leia mais

Organização e Arquitetura de Computadores INTRODUÇÃO

Organização e Arquitetura de Computadores INTRODUÇÃO Organização e Arquitetura de Computadores INTRODUÇÃO A Arquitetura de Computadores trata do comportamento funcional de um sistema computacional, do ponto de vista do programador (ex. tamanho de um tipo

Leia mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 12 Estrutura e função do processador slide 1 Estrutura da CPU CPU precisa: Buscar instruções. Interpretar instruções. Obter

Leia mais

Disciplina: Arquitetura de Computadores

Disciplina: Arquitetura de Computadores Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na

Leia mais

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar

Leia mais

Tecnologia dos Microprocessadores. António M. G. Pinheiro Universidade da Beira Interior Covilhã - Portugal

Tecnologia dos Microprocessadores. António M. G. Pinheiro Universidade da Beira Interior Covilhã - Portugal Tecnologia dos Microprocessadores António M. G. Pinheiro Covilhã - Portugal pinheiro@ubi.pt PIPELINES; SUPERESCALARIDADE. MEMÓRIAS CACHE. MICROPROCESSADORES RISC VERSUS CISC. PIPELINES CONSISTE NA SUBDIVISÃO

Leia mais

UCP: Construindo um Caminho de Dados (Parte III)

UCP: Construindo um Caminho de Dados (Parte III) UCP: Construindo um Caminho de Dados (Parte III) Cristina Boeres Instituto de Computação (UFF) Fundamentos de Arquiteturas de Computadores Material baseado nos slides do Fernanda Passos Cristina Boeres

Leia mais

Conceitos Básicos Processador

Conceitos Básicos Processador Infra-Estrutura de Hardware Conceitos Básicos Processador Prof. Edilberto Silva www.edilms.eti.br edilms@yahoo.com Sumário Conceitos básicos Organização da CPU Execução das Instruções RISC x CISC Paralelismo

Leia mais

Unidade de Controle. Sinais e temporização da busca de instrução. Prof. Eduardo Appel

Unidade de Controle. Sinais e temporização da busca de instrução. Prof. Eduardo Appel Unidade de Controle Prof Eduardo Appel appel@upftchebr Uma CPU de um microprocessador pode interpretar o conteúdo de uma palavra de memória como sendo o código de instrução Mas pergunta-se: Qual o número

Leia mais