1. An apparatus comprising a matrix-vector multiplication (MVM) component that generates a product vector based on (i) an input matrix and (ii) an input vector, the MVM component comprising: a permuter that: for a current input sub-vector of the input vector, permutates the current input sub-vector based on a current set of permutation coefficients to generate a current set of permuted input sub-vectors, wherein each permutation coefficient in the current set corresponds to a different sub-matrix in a current block column of the input matrix; and for a subsequent input sub-vector of the input vector, permutates the subsequent input sub-vector based on a subsequent set of permutation coefficients to generate a subsequent set of permuted input sub-vectors, wherein each permutation coefficient in the subsequent set corresponds to a different sub-matrix in a subsequent block column of the input matrix; memory that stores a set of two or more intermediate product sub-vectors corresponding to the product vector, wherein each intermediate product sub-vector corresponds to a different block row of the input matrix; and an XOR gate array that: for the current input sub-vector, performs exclusive disjunction on (i) the current set of permuted input sub-vectors and (ii) the set of intermediate product sub-vectors to update the set of intermediate product sub-vectors; and for the subsequent input sub-vector, performs exclusive disjunction on (i) the subsequent set of permuted input sub-vectors and (ii) the set of intermediate product sub-vectors to update the set of intermediate product sub-vectors, wherein the XOR gate array updates all of the intermediate product sub-vectors in the set based on the current input sub-vector before updating any of the intermediate product sub-vectors in the set based on the subsequent input sub-vector.