Claims
- 1. A method for multiplying a first matrix {A} with I*N complex elements a(i,n)=(Re(a(i,n)), Im(a(i,n))) and a second matrix {B} with N*J complex elements b(n,j)=(Re(b(n,j)), Im(b(n,j))) to a third matrix {C} with I*J complex elements c(i,j)=(Re(c(i,j)), Im(c(i,j))),
- wherein i=1 to I, j=1 to J, and n=1 to N
- wherein, a, b, c are complex numbers
- said method comprising the following steps:
- (i) loading Re(b(n,j)) and Im(b(n,j)) for all n and for all j into a memory array;
- (ii) loading Re(a(i,n)) and Im(a(i,n)) for one i and for all n into registers of a register array;
- (iii) simultaneously for all j and for all n providing intermediate results
- f.sub.1 (i,j,n)=Re(a(i,n))*Re(b(n,j)) by first multiplication units,
- f.sub.2 (i,j,n)=-Im(a(i,n))*Im(b(n,j)) by second multiplication units,
- f.sub.3 (i,j,n)=Re(a(i,n))*Im(b(n,j)) by third multiplication units,
- f.sub.4 (i,j,n)=Im(a(i,n))*Re(b(n,j)) by fourth multiplication units;
- (iv) simultaneously for all j and for all n providing intermediate results
- ReSum (i,j,n)=f.sub.1 (i,j,n)+f.sub.2 (i,j,n) by first adders
- ImSum (i,j,n)=f.sub.3 (i,j,n)+f.sub.4 (i,j,n) by second adders;
- (v) simultaneously for all j accumulating over all n said intermediate results
- ReSum (i,j,n) to Re(c(i,j)) by first accumulators and
- ImSum to Im(c(i,j)) by second accumulators while repeating said steps (ii), (iii), and (iv); and
- (vi) repeating said steps (ii), (iii), (iv) and (v) for all i.
- 2. The method of claim 1 wherein in said step (i) for every j, Re(b(n,j)) for all n go into a first column of said memory array, -Im(b(n,j)) for all n go into a second column of said memory array, Im(b(n,j)) for all n go into a third column of said memory array, and Re(b(n,j)) for all n go into a fourth column of said memory array.
- 3. The method of claim 1 wherein in said step (ii), said a(i,n) is loaded alternating with Re(a(i,n)) and Im(a(i,n)) into adjacent registers of said register array.
- 4. The method of claim 1 wherein in said step (iii) for each j, said first multiplication units receive Re(b(n,j)) from first columns of said memory array, said second multiplication units receive -Im(b(n,j)) from second columns, said third multiplication units receive Im(b(n,j)) from third columns, and said fourth multiplication units receive Re(b(n,j)) from fourth columns, said multiplication units being adjacent for each j.
- 5. The method of claim 1 wherein in said step (i) said Re(b(n,j)) are loaded in two copies at different memory locations and Im(b(n,j)) are loaded as +Im(b(n,j)) and as -Im(b(n,j)) at different memory locations.
- 6. The method of claim 1 wherein in said step (ii) Re(a(i,n)) and Im(a(i,n)) are loaded substantially simultaneously via a first bus and via a second bus, respectively.
- 7. The method of claim 1 wherein in said step (i), Re(b(n,j)) and Im(b(n,j)) are cyclically first loaded to said register array by busses and second transferred from said register array to said memory array.
- 8. The method of claim 1 wherein in said steps (i) and (ii) said Re(a(i,n)), Im(a(i,n)), Re(b(n,j)), and Im(b(n,j)) are provided in logarithmic form and wherein in said step (iii), said f.sub.1 (i,j,n), f.sub.2 (i,j,n), f.sub.3 (i,j,n) and f.sub.4 (i,j,n) are calculated by addition and log.sup.-1 operations.
- 9. An apparatus for performing a complex matrix multiplication {C}={A}*{B}, wherein {A} includes (I*N) numbers a(i,n)=(Re(a(i,n)) Im(a(i,n))), wherein {B} includes (N*J) numbers b(n,j)=(Re(b(n,j)), Im(b(n,j))) and wherein {C} includes (I*J) numbers c(i,j)=(Re(c(i,j)), Im(c(i,j))) arranged in I row vectors {C}.sub.V (i),
- said apparatus comprising:
- (i) a first plurality of J first groups, each of said first groups having (2*N)+2 memory locations
- a first multiplication unit coupled to said memory locations for providing f.sub.1 (i,j,n)=Re(a(i,n))*Re(b(n,j)),
- a second multiplication unit coupled to said memory locations for providing f.sub.2 (i,j,n)=-Im(a(i,n))*Im(b(n,j)),
- a first adder coupled to said first and second multiplication units for providing ReSum (i,j,n)=f.sub.1 (i,j,n)+f.sub.2 (i,j,n),
- a first accumulator coupled to said first adder for accumulating ReSum (i,j,n) to Re(c(i,j)); and
- (ii) a second plurality of J second groups, each of said second groups having (2*N)+2 memory locations
- a third multiplication unit coupled to said memory locations for providing f.sub.3 (i,j,n)=Re(a(i,n))*Im(b(n,j)),
- a fourth multiplication unit coupled to said memory locations for providing f.sub.4 (i,j,n)=Im(a(i,n))*Re(b(n,j)),
- a second adder coupled to said third and fourth multiplication units for providing ImSum (i,j,n)=f.sub.3 (i,j,n)+f.sub.4 (i,j,n),
- a second accumulator coupled to said second adder for accumulating ImSum (i,j,n) to Im(c(i,j)),
- said apparatus providing all c(i,j) of one row vector {C}.sub.V (i) at substantially one time by said first groups and by said second group after having calculated Re(c(i,j)) and Im(c(i,j)) in cycles with substantially all n=1 to N,
- said apparatus providing a complete matrix {C} by repeating the calculation of row vector {C}.sub.V (i) for substantially all i=1 to I.
- 10. The apparatus of claim 9 wherein said memory locations store said Re(a(i,n)), Im(a(i,n)), Re(b(n,j)), and Im(b(n,j)) in logarithmic representations and wherein each of said first, second, third and fourth multiplication units has a fifth, sixth, seventh, and eighth adder, respectively, and a first, second, third, and fourth log.sup.-1 unit.
- 11. The apparatus of claim 9 wherein said first and second accumulators are implemented by adder units, each having first inputs, second inputs, and outputs, and wherein said first inputs are coupled to said outputs via switches.
- 12. The apparatus of claim 9 with J=16.
- 13. The apparatus of claim 9 further having a first bus and a second bus for providing said numbers, said first bus being coupled to that of said memory locations which store Re(b(n,j)), Im(b(n,j)) and Re(a(i,n)) and said second bus being coupled to that of said memory locations which store -Im(b(n,j)), Re(b(n,j)) and Im(a(i,n)).
RELATED INVENTIONS
The present invention is related to the commonly assigned United States applications:
US Referenced Citations (3)
Number |
Name |
Date |
Kind |
4354249 |
King et al. |
Oct 1982 |
|
5204830 |
Wang et al. |
Apr 1993 |
|
5226002 |
Wu et al. |
Jul 1993 |
|