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

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

Carlos Sêrro – Maio de 2007 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU1 - 1 LU1 Enunciado Admita um processador em pipeline semelhante.

Apresentações semelhantes


Apresentação em tema: "Carlos Sêrro – Maio de 2007 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU1 - 1 LU1 Enunciado Admita um processador em pipeline semelhante."— Transcrição da apresentação:

1 Carlos Sêrro – Maio de Nov-13 Arquitectura de Computadores 2004/05 Exercício LU1 - 1 LU1 Enunciado Admita um processador em pipeline semelhante ao MIPS, mas com 4 andares de execução, como se indica na figura a seguir. IF ID BR EX1 EX2 ME1 EX3 ME2 EX4WB

2 Carlos Sêrro – Maio de 2007 LU1 Enunciado (cont.) Admita ainda que existe forwarding total para as instruções que não necessitam de 4 ciclos de execução, e que as instruções que nos vão interessar neste problema exigem os seguinte número de ciclos de execução: Multiplicação em vírgula flutuante – 4 ciclos Adição em vírgula flutuante – 2 ciclos Operação com inteiros – 1 ciclo Admita ainda que existe um branch delay slot, que não existe latência entre as operações com inteiros e as operações de branch que delas dependem, e que a latência para os pares de instruções (Load- Utilizador do Load) é de 2 ciclos --- por outras palavras, o número de delay slots para os Loads é igual a 2. Pretende-se fazer correr o seguinte código neste pipeline, que calcula o produto interno de dois arrays de números em vírgula flutuante com 32 bits. 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício MI1 - 2

3 Carlos Sêrro – Maio de 2007 LU1 Enunciado (cont.) Prod: L.DF5,0(R1) ; carrega elem. do primeiro array L.DF6,0(R2) ; carrega elem. do segundo array MUL.SF7,F5,F6 ; multiplica os elementos ADD.SF4,F4,F7 ; acumula resultado em F4 ADDIR1,R1,4 ; incrementa ponteiro ADDIR2,R2,4 ; incrementa ponteiro ADDIR3,R3,-1 BNER3,R0,Prod ; fecha o ciclo NOP ; branch delay slot Admita que R1 e R2 contêm os endereços iniciais dos arrays, e que F4 foi inicializado a Quantos ciclos dura a execução de uma iteração, se não alterar o código? 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU1 - 3

4 Carlos Sêrro – Maio de Nov-13 Arquitectura de Computadores 2004/05 Exercício MI1 - 4 LU1 Enunciado (cont.) 2. Modifique o código, por forma a obter o menor número possível de ciclos de execução. Não desdobre os ciclos (isto é, não faça loop unrolling). Mostre o código que resulta desse escalonamento. Quantos ciclos dura agora a execução de uma iteração? 3. Faça agora um único desdobramento do ciclo. Faça o escalonamento por forma a eliminar completamente os stalls. Escreva o código resultante. Quantos ciclos dura agora a execução de uma iteração? 4. Se desdobrar o ciclo 8 vezes, quantos ciclos por iteração se conseguem? Nota: não precisa de escrever o código que resulta do desdobramento, nas precisa de justificar a sua resposta.

5 Carlos Sêrro – Maio de Nov-13 Arquitectura de Computadores 2004/05 Exercício MI1 - 5 MI1 [adaptado de AQA3e – 3.16, pág. 294] Resolução ciclos: 9 das instruções, mais 2 stalls antes dos MUL.S, e ainda 3 stalls antes do ADD.S Prod: L.DF5,0(R1) ; carrega elem. do primeiro array L.DF6,0(R2) ; carrega elem. do segundo array NOP MUL.SF7,F5,F6 ; multiplica os elementos NOP ADD.SF4,F4,F7 ; acumula resultado em F4 ADDIR1,R1,4 ; incrementa ponteiro ADDIR2,R2,4 ; incrementa ponteiro ADDIR3,R3,-1 BNER3,R0,Prod ; fecha o ciclo NOP ; branch delay slot RAW - 2 ciclos L.D-Utilizador RAW - 4 ciclos de execução do MUL.S WB no 4º ciclo leitura de F7 no mesmo ciclo pelo ADD.S

6 Carlos Sêrro – Maio de 2007 LU1 Resolução (cont.) 2. 9 ciclos/iteração: 8 das instruções, mais 1 stall antes do BNE. ADD.S no branch delay slot Prod: L.DF5,0(R1) ; carrega elem. do primeiro array L.DF6,0(R2) ; carrega elem. do segundo array ADDIR1,R1,4 ; incrementa ponteiro ADDIR2,R2,4 ; incrementa ponteiro MUL.SF7,F5,F6 ADDIR3,R3,-1 NOP BNER3,R0,Prod ADD.SF4,F4,F7 ; no branch delay slot 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU ciclos L.D-Utilizador 4 ciclos de execução do MUL.S Prod: L.DF5,0(R1) L:DF6,0(R2) NOP MUL.SF7,F5,F6 NOP ADD.SF4,F4,F7 ADDIR1,R1,4 ADDIR2,R2,4 ADDIR3,R3,-1 BNER3,R0,Prod NOP

7 Carlos Sêrro – Maio de 2007 LU1 Resolução (cont.) instruções, sem stalls em 2 iterações 6 ciclos/iteração Prod: L.DF5,0(R1) ; carrega elem. do primeiro array L.DF6,0(R2) ; carrega elem. do segundo array L.DF8,4(R1) ; carrega outro elem. do prim. array L.DF9,4(R2) ; carrega outro elem. do segundo array MUL.SF7,F5,F6 ADDIR1,R1,8 ; incrementa ponteiro MUL.SF10,F8,F9 ADDIR2,R2,8 ; incrementa ponteiro ADD.SF4,F4,F7 ; acumula resultado em F4 ADDIR3,R3,-2 BNER3,R0,Prod ; fecha o ciclo ADD.SF4,F4,F10 ; acumula resultado em F4 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU Nov-13 Arquitectura de Computadores 2004/05 Exercício MI1 - 7

8 Carlos Sêrro – Maio de 2007 LU1 Resolução 4. Uma iteração possui 4 instruções efectivas (não contando com o overhead do ciclo): duas L.D, uma MUL.S e uma ADD.S. O overhead é constituído por 4 instruções (três ADDI e um BNE), que se podem distribuir pelas 8 iterações. Temos, portanto, 4*8+4 = 36 ciclos/8 iterações ou 4,5 ciclos/iteração. 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU1 - 8


Carregar ppt "Carlos Sêrro – Maio de 2007 7-Nov-13 Arquitectura de Computadores 2004/05 Exercício LU1 - 1 LU1 Enunciado Admita um processador em pipeline semelhante."

Apresentações semelhantes


Anúncios Google