1. A method for transferring a matrix for performing one or more operations, wherein the method comprises: applying a permutation on three or more columns and/or three or more rows of a matrix stored in column and/or row major ordering to associate the three or more columns and/or the three or more rows of the matrix with a same alignment of a starting memory address, wherein said applying is carried out by a permutation module executing on a hardware processor; blocking two or more non-consecutive columns and/or two or more non-consecutive rows from the associated three or more columns and/or the associated three or more rows into at least one matrix block of non-contiguous data, wherein the starting memory address of each matrix block is aligned and the size of each matrix block is a multiple of a cache line size, and wherein said blocking is carried out by a permutation module executing on a hardware processor; and performing one or more operations on each matrix block, wherein said performing is carried out by a matrix operation module.