본문 바로가기
CS 공부/컴퓨터구조

컴퓨터구조_ILP(Instruction Level Paralleism) 문제 풀이

by 꼬질꼬질두부 2023. 5. 30.

다음 프로그램을 dual-issue 에서 수행하고자 한다.

Loop: lw $t0, 0($s1) # $t0=array element

addu $t0, $t0, $s2  # add scalar in $s2

sw $t0, 0($s1)

addi $s1, $s1,–4

bne $s1, $zero, Loop # branch $s1!=0

 

1) 2개의 루프를 하나의 루프로 Unrolling한 프로그램을 작성하시오.

Loop: addi $s1, $s1, –8
lw $t0, 8($s1)
addu $t0, $t0, $s2
sw $t0, 8($s1)
--------------------------------
lw $t1, 4($s1)
addu $t1, $t0, $s2
sw $t1, 4($s1)
bne $s1, $zero, Loop

  

2) 작성한 프로그램으로 명령어 수행을 스케줄링 하시오.

  ALU / branch Load/store cycle
Loop: addi $s1, $s1, –8 lw  $t0, 8($s1) 1
  Nop// lw dependencies때문에 한번 쉼 lw  $t1, 4($s1) 2
  addu $t0, $t0, $s2 Nop 3
  addu $t1, $t1, $s2 sw  $t0, 8($s1) 4
  bne  $s1, $zero, Loop sw  $t1, 4($s1) 5

Unrolling한 프로그램에서는 총 8번의 명령어 실행이 이루어졌어야하지만,

스케줄링을 통해 명령어를 5번만 실행해도 가능해졌다.

 

댓글