|
Matrix Multiplication
for i := 1 to n do
for j := 1 to n do
for k := 1 to n do
c[i,j] = c[i,j] + a[i,k] ∗ b[k,j]
endfor
endfor
endfor |
Code for Scalar Processor
loop: |
Code for Scalar Processor |
loadf f2, (r2)
loadf f3, (r3)
mpyf f4, f2, f3 addf f1, f1, f4
addi r2, r2, #4
add r3, r3, r13
subi r1, r1, #1
bnz r1, loop |
;f1 holds value of C[i,j]
;r1 holds value of n
;r2 holds address of A[i,1]
;r3 holds address of B[1,j]
;r13 holds size of row of B
;4 is the size of an element of A
;loop label
;load A[i,k]
;load B[k,j]
;A[i,k] * B[k,j]
;C = C + A * B
;incr pointer to A[i,k+1]
;incr pointer to B[k+1,j]
;decr r1 by 1
;branch to loop if r1 6= 0 |
|