Encadeamento de instruções

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

Download "Encadeamento de instruções"

Transcrição

1 Encadeamento de instruções (Pipelines) Outubro de 2010 (FEUP/DEEC) Pipelines Outubro de / 62 Assuntos 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62

2 Execução concorrente de instruções 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 3

3 Execução concorrente de instruções O modelo sequencial de computação No modelo sequencial de computação (ou modelo von Neumann), 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. Efeitos observáveis: alteração de valores de registos ou posições de memória, alteração de flags, geração de excepções, etc. Implementação directa ao modelo: apenas se pode aumentar o desempenho tornando a execução da operação mais rápida. Para melhor desempenho: executar instruções parcial ou totalmente em simultâneo. A execução concorrente deve ter comportamento igual ao que seria apresentado pela execução segundo o modelo tradicional. (FEUP/DEEC) Pipelines Outubro de / Comportamento igual refere-se à sequência de estados observáveis (indirectamente) que o computador atravessa O modelo sequencial permite atribuir de uma forma simples um significado operacional a um programa. Tem a grande vantagem de 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 em consideração. 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 Mais informações sobre John von Neumann podem ser obtidas em http: //www-history.mcs.st-andrews.ac.uk/biographies/von_neumann.html. 4

4 Execução concorrente de instruções 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). Estas técnicas caiem 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). (FEUP/DEEC) Pipelines Outubro de / Não existe uma divisão estanque entre as duas categorias de técnicas; algumas podem ser adoptadas nos dois domínios 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. 5

5 Execução concorrente de instruções Considerações básicas 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). Exemplo de 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 a ter em consideração: 1 Que propriedades dos programas e dos processadores limitam a quantidade de paralelismo que pode ser aproveitado? 2 Como mapear a estrutura do programa na do processador?. Alternativa: expressar o paralelismo directamente na especificação do programa (grandes dificuldades ao nível da concepção dos programas). (FEUP/DEEC) Pipelines Outubro de / 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. 6

6 Dependências entre instruções 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 7

7 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, mantendo a sua ordem relativa. Dependências de dados: dependências verdadeiras dependências de nome. Dependências de controlo Um conflito ocorre sempre que existe uma dependência entre instruções suficientemente próximas (no fluxo de execução) para que a sobreposição ou re-ordenação modifique a ordem de acesso ao operando envolvido na dependência (registo ou posição de memória). 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. (FEUP/DEEC) Pipelines Outubro de / 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, a organização do CPU pretende 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 executadas. 8

8 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!= R2 Dependências entre instruções são transitivas. Para simplificar, apenas se mostram as dependências directas. (FEUP/DEEC) Pipelines Outubro de / Num processador com capacidade para executar concorrentemente várias instruções em pipeline é, quase sempre, necessário detectar eventuais conflitos. 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. 9

9 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: indica a possibilidade de existência de um conflito; determina a ordem de cálculo; limita paralelismo que pode ser aproveitado. Fluxo de dados: por registos e flags por memória. Abordagens possíveis: manter a dependência, mas evitar o conflito; eliminar a dependência por transformação do código. (FEUP/DEEC) Pipelines Outubro de / 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 usado 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. 10

10 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 ao resultado da instrução 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 certas ocorrências de «nome» sejam alteradas: register renaming. (FEUP/DEEC) Pipelines Outubro de / 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. 11

11 Conflitos de dados Dependências entre instruções Quando as dependências não são respeitadas durante a execução, diz-se que existe um conflito (em inglês: hazard). Os conflitos de dados possíveis entre duas instruções i e j (que ocorrem no programa por esta ordem) são: 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. O facto de uma dependência provocar ou não um conflito é determinado pela organização interna do CPU e pressupõe algum tipo de execução concorrente ou fora de ordem. (FEUP/DEEC) Pipelines Outubro de / A sequência RAR (read after read) não produz conflitos 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. 12

12 Dependências entre instruções Dependências de controlo Uma dependência de controlo determina a ordem de uma instrução i face a uma instrução de salto condicional. Dependências de controlo impõem duas restrições: 1 Uma instrução dependente de um salto não pode ser colocada antes do salto, porque já não seria controlada por essa instrução. 2 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 na presença excepções. (FEUP/DEEC) Pipelines Outubro de / Todas as instruções de um programa, excepto as do primeiro bloco básico, dependem de algum conjunto de saltos condicionais 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. 13

13 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:... É 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. (FEUP/DEEC) Pipelines Outubro de / 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 últimas 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 L1 (ou, mais precisamente, nesse zona é preciso que exista uma escrita em R1 antes de qualquer leitura desse registo). 14

14 Dependências entre instruções Preservação do fluxo de dados 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 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 para a instrução 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. (FEUP/DEEC) Pipelines Outubro de / 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 executadas pelo compilador (para saber quando pode reutilizar registos). 15

15 Fundamentos da operação de pipelines 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 16

16 Fundamentos da operação de pipelines 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 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 Cada andar trabalha concorrentemente com os outros, embora sobre uma parte diferente da instrução. 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. (FEUP/DEEC) Pipelines Outubro de / 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). 17

17 Fundamentos da operação de pipelines 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 (cf. anexo). Operações de dados aplicam-se a registos de 64 bits; Apenas instruções load/store afectam a memória; podem operar sobre parte de um registo (por exemplo, afectando 32 bits de 64); Instruções de igual comprimento e poucos formatos diferentes. Tipos de instruções: 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. (FEUP/DEEC) Pipelines Outubro de / 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. 18

18 Fundamentos da operação de pipelines Implementação multi-ciclo sem pipeline 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+4. 2 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. Duração (em ciclos): Saltos: 2, store: 4, outras: 5. CPI=4,54 se assumirmos frequências de 12%, 10%, e 78%. (FEUP/DEEC) Pipelines Outubro de / 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. Algumas 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 4. Contudo, isso já não será possível na implementação em pipeline, pelo que também não é feito aqui. 19

19 Fundamentos da operação de pipelines Pipeline de cinco 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. Este arranjo assume que existem memórias cache separadas para dados e instruções (evitam conflitos entre IF e MEM). (FEUP/DEEC) Pipelines Outubro de / 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 fazem nada na etapa 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. 20

20 Fundamentos da operação de pipelines Múltiplos percursos de dados desfasados no tempo Fonte: [CAQA3] O banco de registos tem de suportar 2 leituras e 1 escrita por ciclo. Problema: Salto condicional só modifica PC no andar ID (é impossível ser mais cedo) podem existir conflitos de controlo. (FEUP/DEEC) Pipelines Outubro de / 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. 21

21 Fundamentos da operação de pipelines Inserção de registos entre andares Fonte: [CAQA3] Registos evitam a interferência entre andares e preservam valores intermédios. (FEUP/DEEC) Pipelines Outubro de / 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). 22

22 Fundamentos da operação de pipelines 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 (FEUP/DEEC) Pipelines Outubro de / 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. 23

23 Resolução de conflitos 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 24

24 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. (FEUP/DEEC) Pipelines Outubro de / 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. 25

25 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). Consequência: durante o protelamento não são processadas novas instruções. Pode não ser proveitoso eliminar conflitos que ocorram raramente, porque nesse caso o número médio de ciclos de protelamento devidos a 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). (FEUP/DEEC) Pipelines Outubro de / O protelamento de operação é a solução universal. Esta solução requer a existência de circuitos de detecção de conflitos (pipeline interlocks). 26

26 Resolução de conflitos Conflitos estruturais 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 27

27 Resolução de conflitos Conflitos estruturais 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 (FEUP/DEEC) Pipelines Outubro de / Supõe-se que as instruções i + 1, i + 2, etc. não acedem a memória 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. 28

28 Resolução de conflitos Conflitos estruturais Ilustração de um conflito estrutural Fonte: [CAQA3] Confito estrutural ocorre se o processador não protelar a instrução 3. (FEUP/DEEC) Pipelines Outubro de / 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. 29

29 Resolução de conflitos Conflitos de dados 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 30

30 Conflitos de dados Resolução de conflitos Conflitos de dados Um grande efeito da utilização de pipelines é 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 pipeline). 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 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). (FEUP/DEEC) Pipelines Outubro de / 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 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. 31

31 Resolução de conflitos Conflitos de dados Forwarding pode resolver conflitos de dados Fonte: [CAQA3] 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. Neste caso, a sequência apresentada executa sem protelamento. (FEUP/DEEC) Pipelines Outubro de / 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. 32

32 Resolução de conflitos Protelamento pode ser inevitável Conflitos de dados Em certas situações a existência de atalhos não evita o protelamento. 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, R9 Fonte: [CAQA3] (FEUP/DEEC) Pipelines Outubro de / 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. 33

33 Resolução de conflitos Conflitos de dados Protelar resolve o problema... Tratamento da mesma sequência de operações sem e com atalhos. 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 (FEUP/DEEC) Pipelines Outubro de / A sequência de etapas de processamento da tabela inferior mostra como o protelamento resolve o problema de ter os dados correctos em R Notar que 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. 34

34 Resolução de conflitos Conflitos de controlo 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 35

35 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 é sabido se o salto é realmente 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 Estes conflitos levam a perdas de desempenho de 10% 30% A número de conflitos de dados aumenta com a capacidade de resolução dos conflitos de dados, porque existem mais instruções em condições de serem executadas. (FEUP/DEEC) Pipelines Outubro de / 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. 36

36 Resolução de conflitos Optar por uma das alternativas Conflitos de controlo 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 (FEUP/DEEC) Pipelines Outubro de / Também se pode partir do princípio que o salto é tomado. No caso presente, isso não tem interesse. (Porquê?) 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. 37

37 Resolução de conflitos Conflitos de controlo Execução incondicional da instrução seguinte Outra alternativa: 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 (FEUP/DEEC) Pipelines Outubro de / A este tipo de salto chama-se delayed branch 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. 38

38 Resolução de conflitos Conflitos de controlo Branch delay slot: estratégias de sequenciamento Fonte: [CAQA3] (FEUP/DEEC) Pipelines Outubro de / 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. 39

39 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ódigos de condição (flags) 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). (FEUP/DEEC) Pipelines Outubro de / 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. 40

40 Tratamento de instruções complexas 1 Execução concorrente de instruções 2 Dependências entre instruções 3 Fundamentos da operação de pipelines 4 Resolução de conflitos Conflitos estruturais Conflitos de dados Conflitos de controlo 5 Tratamento de instruções complexas (FEUP/DEEC) Pipelines Outubro de / 62 41

41 Tratamento de instruções complexas Unidades funcionais adicionais A presença de instruções que necessitem de mais que um período de relógio pode requerer a utilização de múltiplas unidades funcionais. Cada unidade demora um certo número de períodos a produzir um resultado. EX int EX VF/int mul IF ID MEM WB EX VF soma EX VF/nt div (FEUP/DEEC) Pipelines Outubro de / 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. 42

42 Tratamento de instruções complexas Latência e intervalos de repetição Em geral, (algumas) unidades de execução multi-ciclo são pipelined. Também deve ser possível ter múltiplas instruções em execução para aproveitar todos os recursos disponíveis. Cada unidade funcional é caracterizada pela sua latência e pelo seu intervalo de repetição. latência Número mínimo de períodos entre o início da execução de uma instrução e a primeira instrução que usa o seu resultado. intervalo de repetição Número mínimo de períodos entre a emissão de duas instruções que usam a mesma unidade. Exemplo: 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.) (FEUP/DEEC) Pipelines Outubro de / 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. 43

43 Tratamento de instruções complexas Unidades funcionais com pipeline Fonte: [CAQA3] (FEUP/DEEC) Pipelines Outubro de / 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. 44

44 Conflitos RAW Tratamento de instruções complexas Com unidades funcionais que demoram mais que um período a produzir o resultado, podem ocorrer conflitos do tipo RAW. Instruções independentes: Instruções dependentes: (FEUP/DEEC) Pipelines Outubro de / 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 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

45 Conflitos WAW Tratamento de instruções complexas Também podem ocorrer conflitos do tipo WAW. 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. (FEUP/DEEC) Pipelines Outubro de / 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. 46

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

Execução concorrente de instruções: Pipelines 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)

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

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

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

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

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

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

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

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

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

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

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

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

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.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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Arquitetura de Computadores. Prof. João Bosco Jr.

Arquitetura de Computadores. Prof. João Bosco Jr. Arquitetura de Computadores Prof. João Bosco Jr. (CPU) Modelo do Computador Von Neumann Processador Memórias E/S Barramentos Simulação Contador http://courses.cs.vt.edu/csonline/machinearchitecture/lessons/cpu/countprogram.html

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

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

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

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

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

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining

Arquitecturas Alternativas. Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining Arquitecturas Alternativas Arquitectura X86-64 Arquitecturas RISC Exemplo: MIPS Desempenho de sistemas Pipelining X86-64 Qual é o ISA que temos nas máquinas Intel actuais? O x86-64 que é uma extensão para

Leia mais

Prof. Leonardo Augusto Casillo

Prof. Leonardo Augusto Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 2 Estrutura de um processador Prof. Leonardo Augusto Casillo Arquitetura de Von Neumann: Conceito de programa armazenado; Dados

Leia mais

2. A influência do tamanho da palavra

2. A influência do tamanho da palavra PROCESSAMENTO 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

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

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v CIRCUITOS SEQUENCIAIS ESTRUTURA GERAL Varáveis de entrada Variáveis de saída Variáveis de estado Circ. combinatório Memória Circuito Combinatório Memória Actual Seguinte CIRCUITOS SEQUENCIAIS Exemplo :

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

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani)

Arquitetura de Computadores. Professor: Vilson Heck Junior (Material: Douglas Juliani) Arquitetura de Computadores Professor: Vilson Heck Junior (Material: Douglas Juliani) Agenda Conceitos Componentes Funcionamento ou tarefas Otimização e desempenho Conceitos Componente de Hardware que

Leia mais

Organização ou MicroArquitectura

Organização ou MicroArquitectura Organização ou MicroArquitectura DataPath MIPS32 AC Micro-Arquitectura: DataPath do MIPS Datapath e Controlpath Datapath circuito percorrido pelas instruções, endereços e ados IP Inst. Mem. Register File

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

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v

Circuitos Sequenciais Escola Naval - Dep. Armas e Electrónica v CIRCUITOS SEQUENCIAIS ESTRUTURA GERAL Varáveis de entrada Variáveis de saída Variáveis de estado Circ. combinatório Memória Circuito Combinatório Memória Actual Seguinte CIRCUITOS SEQUENCIAIS Exemplo :

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

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES

UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES Tecnologia da informação e comunicação UNIDADE CENTRAL DE PROCESSAMENTO FELIPE G. TORRES CICLO DE INSTRUÇÕES OU DE EXECUÇÃO Arquitetura de computadores 2 CICLO DE EXECUÇÃO No inicio de cada ciclo de instrução,

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

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

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

Conjunto de Instruções e Modelos de Arquiteturas

Conjunto de Instruções e Modelos de Arquiteturas Departamento de Engenharia Elétrica e de Computação EESC-USP SEL-0415 Introdução à Organização de Computadores Conjunto de Instruções e Modelos de Arquiteturas Aula 7 Prof. Marcelo Andrade da Costa Vieira

Leia mais

Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas

Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas Trabalhos Práticos Arquitetura de Computadores I Prof. Fabian Vargas Material a ser utilizado: Kits de desenvolvimento de sistemas microprocessados para aplicações em DSP Texas DSK-TMS320C67xx. Apresentação

Leia mais