Patent ID: 9189164
Filing Date: 2015-11-17
Classification: G06F

Abstract:
1. A card-based non-volatile storage system comprising: a CPU; a CPU memory connected to the CPU; and a plurality of system controllers connected to the CPU, each system controller comprising: system communication bus interfaces, each system communication bus interface configured to be allow communication from the system controller to one or more non-volatile memory chips, each non-volatile memory chip comprising a plurality of blocks, each block comprising a plurality of pages, each page representing an addressable memory location to which data may be written; and a programmable memory within the system controller, the programmable memory programmed with a program for causing the system controller to write data to the non-volatile memory chips in the form of page stripes, each page stripe comprising a number of data pages, each data page of a page stripe being written to a different non-volatile memory chip from other data pages of the page stripe; wherein the system controller performs encryption on the data pages of the page stripes before writing the page stripes to the non-volatile memory chips, the system controller performing the encryption on the data pages of a given page stripe by: shuffling a portion of each data page of the page stripe, the shuffling comprising loading each portion of the data page of the page stripe in sequential order into a data shuffling buffer such that the data page is loaded into the data shuffling buffer in a sequential order relative to other data pages in the page stripe, and unloading each portion of the data page of the page stripe in non-sequential order from the data shuffling buffer such that the data page is unloaded from the data shuffling buffer in a non-sequential order relative to other data pages in the page stripe; and scrambling the data pages of the page stripe, the scrambling comprising performing a bitwise logical operation on the data pages of the page stripe that are unloaded from the data shuffling buffer.