Hermitian Matrix Multiplication
[Last modified 10:38:36 AM on Tuesday, 14 May ]Links to background knowledge on the mathematical theory are available on the links page.
Taking Advantage of Hermitian Matrices
If the input matrices are Hermitian, then they will be of the following form:

Figure 1 : Form of the 4x4 Hermitian matrix. "/B" means "conjugate of B"
In addition, the complex multiplier has already been designed to allow multiplication by the conjugate of its inputs, to cater for the calculation of A*A*. This provides the necessary components to implement the following simple solution:
- Implement all matrices by storing them in the form of one column within each memory address.
- When a column is needed, simply read the appropriate address
- When a row is needed, read the address of the corresponding column, and set the multiplier to use the conjugate of its input value.
Performing multiplications with Hermitian optimisations
One technique is, when we calculate any non-diagonal cell of the output matrix, the conjugate value is also written to its corresponding cell on the other side of the diagonal. Therefore, once the first row of the output matrix has been calculated, the first column has also been assigned new values. The next cell to be calculated is then in the second row and the second column. This pattern continues, and the output matrix is completed in the manner depicted by figure 2.

Figure 2 : Order in which the Hermitian matrices are filled in. Dark squares represent the cells currently being written, and light squares represent the cells already calculated.
The key observation in figure 2 is that the first cell to be explicitly written on each row of the output matrix lies on the diagonal. That means that the row and column required for that calculation have the same memory address. For the matrix squaring, that means that the first location read for each output row contains both the data for the row to be read, and the column required for the first calculation. All that is required is to store that row's data, and read each column for the other output cells in that row, as required.
For normal matrix multiplications, exactly the same technique can be used. Although it is not necessary to remember the row data in this case, it is more consistent to do so and allows for simpler circuitry.
Multiplication of any Hermitian matrices
The technique described in this section allows for the calculation of any of the previous cases of normal matrix multiplication, in 16 cycles, when all of the source matrices are known to be Hermitian. When one, or none of the source matrices are Hermitian, then the techniques described for generic matrices may be used. Hence, we now have a way for multiplication of almost any combination of valid matrices, so the next step was to build the signal processor that demonstrated an implementation of this theory.
