1. A method for storing data in a flash memory array having a plurality of physical pages, the method comprising: using a computer, receiving a request to perform a data access operation through a communication bus, the request comprising data and a logical page address; allocating one or more physical pages of the flash memory array to perform the data access operation; and based on a historical usage data of the flash memory array, selectively encoding the data contained in the logical page into the one or more physical pages.